9. 값 타입 (기본값 타입)

HotFried·2023년 10월 2일
0
  • ex) String name, int age

  • 생명 주기를 Entity에 의존
    ex) 회원을 삭제하면 이름, 나이 필드도 함께 삭제

  • 값 타입은 공유하면 안된다
    ex) 회원 이름 변경 시 다른 회원의 이름도 변경되면 안된다


자바의 기본 타입은 절대 공유하지 않는다.

  • int, double 같은 기본 타입(primitive type)은 절대 공유 X
    - 기본 타입은 항상 값을 복사한다.
public class ValueMain {
    public static void main(String[] args) {
        int a = 10;
        // a에 있는 값이 복사가 되어서 b에 할당된다.
        // a와 b는 완전히 별도의 저장 공간을 가지고 있다.
        // 공유되지 않는다.
        int b = a;

        a = 20;

        // a = 20, b = 10
        // a의 값이 복사가 돼서 b로 들어갔기 때문에 b는 변경되지 않는다.
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}
  • Integer같은 래퍼 클래스나 String같은 특수한 클래스는 공유 가능한 객체이지만 변경 불가능
    -> 레퍼런스가 넘어가지만 값을 변경할 방법이 없으므로 사이드 이펙트가 발생가지 않는다.

참고 :

김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.

자바 ORM 표준 JPA 프로그래밍 - 기본편

profile
꾸준하게

0개의 댓글