[Flutter] 심화 버전 - 객체

2024. 11. 22. 17:10·Flutter/심화 버전

1. 객체 생성과 메모리 규칙 할당

다트는 거의 모든 것이 객체이다. int, 정수형 값도객체입니다.

즉! 연산자를 사용할 수 있다.

 

2. 객체 비교에 대한 이해

객체를 비교할 때 두가지 방법이 있습니다.

  1. 값 비교(value)
  2. 주소 값 비교(Reference) -> dart에서는 기본적으로 주소값 비교를 사용

 

불변 <> 가변

불변 : 한번 생성이 되면 내부 상태 값을 변경할 수 없는 객체 (사용하는 이유 ➡️ 메모리 사용량을 줄이고 안정성이 증가)

가변 : 항상 새로운 메모리 주소를 할당 받고 그 공간에 값을 저장

 

import 'package:flutter/material.dart';

void main(){

  // dart .. 문법 정리 - 심화 버전

  // 1. 객체 생성과 메모리 규칙 할당
  // 다트는 거의 모든 것이 객체이다. int, 정수형 값도 객체 입니다.
  // 즉, 연산자를 사용할 수 있다.
  print(1);
  print(1.runtimeType);

  // 객체 생성에 의미
  int n1 = 10; // 10 이라는 객체가 생성 되었다.
  // 설명 - 값은 메모리 공간(상자)에 저장되고 메모리 주소(0x0001) 메모리 주소를 반환 한다.

  User user1 = User('홍길동');
  // 값
  // 참조(Reference), 주소

  print('--------------------------');
  // 2. 객체 비교에 대한 이해
  // 객체를 비교할 때 두가지 방법잉 있습니다.
  // 1. 값 비교 (value)
  // 2. 주소 값 비교 (Reference)
  print(10 == 10);
  print('영회' == '영희');
  // dart 에서는 int, String .. immutable object 간주 한다.
  // 불변 객체는 무슨 의미 일까?
  // 한번 생성이 되었으면 내부 상태 값을 변경할 수 없는 객체를 말한다.
  // 사용하는 이유? --> 메모리 사용량을 줄이고 안전성이 증가 하기 때문입니다.

  // 가변 객체이다. (불변 <> 가변)
  print(User('바이') == User('바이')); // false
  print([100] == [100]); // false
  // Mututabl Object(가변객체) 는 항상 새로운 메모리 주소를 할당 받고 그 공간에 값을 저장 합니다.


  // 중요 1
  // dart 에서는 기본적으로 객체를 비교할 때 **주소값 비교**를 사용합니다.

  // 중요 2
  // 가변 객체는 항상 새 메모리를 할당 하고
  // 불변 객체는 값이 동일 하다면 기존에 생성한 객체를 재활용 합니다.

}

class User{
  final String name;

  User(this.name);
// dart 에서는 단일 라인 생성자를 지원합니다.
  //

}

실행 결과______

'Flutter > 심화 버전' 카테고리의 다른 글

[Flutter] 심화 버전 - 해시 함수  (0) 2024.11.22
[Flutter] 심화 버전 - 가변 객체 -> 불변 객체  (0) 2024.11.22
[Flutter] 심화 버전 - 객체 동등성 재정의  (0) 2024.11.22
[Flutter] 심화 버전 - 불변 객체  (0) 2024.11.22
[Flutter] 심화 버전 - 가변 객체  (0) 2024.11.22
'Flutter/심화 버전' 카테고리의 다른 글
  • [Flutter] 심화 버전 - 가변 객체 -> 불변 객체
  • [Flutter] 심화 버전 - 객체 동등성 재정의
  • [Flutter] 심화 버전 - 불변 객체
  • [Flutter] 심화 버전 - 가변 객체
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[Flutter] 심화 버전 - 객체
상단으로

티스토리툴바