// 불변 객체 (Immutable Object):
// 불변 객체는 생성 후에 내부 상태(멤버 변수)를 변경할 수 없는 객체입니다.
// 한 번 생성된 불변 객체는 그 값을 변경할 수 없습니다.
// 예를 들어, Java에서 String 클래스는 불변 객체의 예입니다.
// 불변 객체는 스레드 안전성을 보장하며 예측 가능한 동작을 제공합니다.
String immutableStr = "Hello"; // 불변 문자열 객체 생성
immutableStr = immutableStr.concat(" World"); // 새로운 문자열을 반환하므로 원래 객체는 변경되지 않음
System.out.println(immutableStr); // "Hello World" 출력
//Java에서 불변 클래스로 사용자 정의하는 방법:
public final class ImmutableClass {
private final int value;
public ImmutableClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
// 가변 객체 (Mutable Object):
// 가변 객체는 생성 후에 내부 상태(멤버 변수)를 변경할 수 있는 객체입니다.
// 예를 들어, Java의 ArrayList 클래스는 가변 객체의 예입니다.
// 가변 객체는 상태를 변경할 수 있기 때문에 주의가 필요하며,
// 다중 스레드 환경에서 문제를 발생시킬 수 있습니다. 따라서 스레드 안전성에 대한 고려가 필요합니다.
ArrayList<String> mutableList = new ArrayList<>();
mutableList.add("Item 1"); // 내부 상태 변경
mutableList.add("Item 2"); // 내부 상태 변경
System.out.println(mutableList); // ["Item 1", "Item 2"] 출력
//Java에서 가변 클래스로 사용자 정의하는 방법:
public class MutableClass {
private int value;
public MutableClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value; // 내부 상태 변경 가능
}
}
'JAVA > DAY 16 _ 23.09.07' 카테고리의 다른 글
API _ String (0) | 2023.09.19 |
---|---|
불변/가변객체2 (0) | 2023.09.19 |
라이브러리 (0) | 2023.09.19 |
Enum(열거형) (0) | 2023.09.19 |
Class 설계원칙 (0) | 2023.09.19 |