기본값 타입

  • String name, int age와 같은 값

  • 생명 주기가 Entity에 의존한다.

    • 회원을 삭제하면 이름, 나이도 함께 삭제된다.

  • 값 타입은 공유하면 안된다.

    • 회원 이름 변경 시 다른 회원의 이름도 변경되면 안된다.

참고

  • 자바의 기본 타입(int, double 등)은 절대로 공유하지 않는다.

    • 항상 값을 복사해서 사용한다.

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 같은 wrapper 클래스나 String 같은 특수한 클래스는 공유 가능한 객체다.

    • 하지만 변경 자체가 불가능하기 때문에 사이드 이펙트를 막을 수 있다.

Last updated

Was this helpful?