기본형과 참조형

기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.

참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다.

int a = 10;
int b = a;

System.out.println("a : " + a); // 10
System.out.println("b : " + b); // 10

b = 20;

System.out.println("a : " + a); // 10
System.out.println("b : " + b); // 20

Address addressA = new Address("seoul");
Address addressB = addressA;

System.out.println("addressA : " + addressA.getAddress()); // seoul
System.out.println("addressB : " + addressB.getAddress()); // seoul

addressB.setAddress("busan");

System.out.println("addressA : " + addressA.getAddress()); // busan
System.out.println("addressB : " + addressB.getAddress()); // busan

 

사이드 이펙트(Side Effect)

특정 부분에서 발생한 변경이 예상치 못한 다른 부분에 영향을 미치는 경우

// addressB의 값만 바꾸기를 원했지만 addressA값도 변하는 경우

Address addressA = new Address("seoul");
Address addressB = addressA;

System.out.println("addressA : " + addressA.getAddress()); // seoul
System.out.println("addressB : " + addressB.getAddress()); // seoul

addressB.setAddress("busan");

System.out.println("addressA : " + addressA.getAddress()); // busan
System.out.println("addressB : " + addressB.getAddress()); // busan

불변객체(Immutable Object)

- 객체 생성 이후 내부의 상태가 변하지 않는 객체

- 필드의 값을 final로 선언

- setter를 구현하지 않음

public class ImmutableAddress {

    private final String value; // final 사용

    public ImmutableAddress(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
    
    // setter 구현 X
    
}

 

'인강 > 자바(중급1편)' 카테고리의 다른 글

String 클래스  (0) 2024.05.15
Object 클래스  (0) 2024.04.23

+ Recent posts