Skip to content

Commit b39ad85

Browse files
committed
docs(java): 불변 객체 내용 보충
1 parent b0b70d6 commit b39ad85

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

  • content/posts/java-mid1-immutable-object

content/posts/java-mid1-immutable-object/index.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: '불변 객체'
33
date: '2026-03-16T19:47:59+09:00'
44
categories: ["Java"]
5-
tags: ["immutable"]
5+
tags: ["immutable", "side effect"]
66
draft: true
77
---
88

@@ -13,6 +13,35 @@ draft: true
1313
- 예제
1414
- 값 변경
1515

16+
## 기본형과 참조형의 공유
17+
18+
- Java의 데이터 타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나눠진다.
19+
- Java는 데이터 타입과 상관없이 항상 값을 복사하여 대입한다.
20+
- 기본형은 하나의 값을 여러 변수에서 값을 절대로 공유하지 않는다.
21+
- 참조형은 하나의 객체 참조값을 여러 변수에서 공유할 수 있다.
22+
23+
## 공유 참조와 사이드 이펙트
24+
25+
- Side Effect는 의도한 주작업 외에 발생하는 추가 작업을 의미한다. 보통 부정적인 의미로 사용한다.
26+
27+
```java
28+
Book book1 = new Book("만화로 배우는 리눅스 시스템 관리");
29+
Book book2 = new Book("만화로 배우는 리눅스 시스템 관리");
30+
```
31+
32+
- Side Effect를 발생하지 않기 위해서는 두 객체가 새로운 인스턴스를 참조하면 된다.
33+
34+
## 불변 객체(Immutable Object)
35+
36+
> [!NOTE]
37+
> - 가변(Mutable): 생성 후 상태를 변경할 수 있다.
38+
> - 불변(Immutable): 생성 후 상태를 변경할 수 없다.
39+
40+
- 객체의 공유(참조값 공유)는 막을 수 없다. 문법적으로 전혀 문제가 없다. 문제는 공유된 객체의 값을 변경할 때 발생한다.
41+
- 불변 객체는 객체의 상태를 변경하지 않는 객체를 의미한다.
42+
- 불변이라는 제약을 추가하여 Side Effect를 방지한다.
43+
- 불변 객체는 값을 변경할 수 없다. 따라서 값 변경이 필요하면 변경하고 싶은 값으로 만든 새로운 불변 객체를 반환한다.
44+
1645
## 질문
1746

1847
- 불변 객체의 값을 변경할 때 메서드 네이밍

0 commit comments

Comments
 (0)