본문 바로가기

JAVA/DAY 16 _ 23.09.07

불변/가변객체1

// 불변 객체 (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