◇ PART · SPRING

Call by Value

Spring 기초
SMHRD

학습 목표

1. 핵심 규칙

자바는 항상 값 복사 (Call by Value). 단, 「값」의 정체가 다름:

2. 세 가지 케이스

케이스결과이유
기본형 변경원본 그대로값(숫자) 복사 → 사본만 변경
객체 필드 변경원본도 변경같은 객체 가리킴 → 같은 메모리 변경
참조 교체 (u = new ...)원본 그대로매개변수만 다른 곳 가리킴

3. 코드 예시

int a = 1; changeNumber(a); // 매개변수 x = 1 복사 → x = 999 → a 무관 // 결과: a == 1 User u = new User("A"); changeName(u); // 매개변수 같은 객체 가리킴 → name 변경 // 결과: u.name == "B" User u = new User("A"); replaceUser(u); // 매개변수만 새 객체 가리킴 → 원본 무관 // 결과: u.name == "A"
한 줄 외움: 객체 「내용 변경」 = 보임 / 변수에 「다른 객체 대입」 = 안 보임.

학습 확인 체크리스트