기본형과 참조형
기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.
참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다.
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 |