call by ref -> 메모리에 저장되어 있는 '주소' 복사 > 메모리 안의 내용이 변경됨
call by value -> 메모리에 저장되어 있는 '값' 복사 > 메모리 안의 내용 변경 안됨
public class Solution {
private String value;
Solution(String value) {
this.value = value;
}
public static void main(String[] args) {
String a = "test1";
String b = "test2";
System.out.println("전 " + a + " | " + b);
solutionA(a,b);
System.out.println("후 " + a + " | " + b);
Solution c = new Solution("test1");
Solution d = new Solution("test2");
System.out.println("전 " + c.value + " | " + d.value);
solutionB(c,d);
System.out.println("후 " + c.value + " | " + d.value);
}
public static void solutionA(String a, String b) {
String temp = a;
a = b;
b = temp;
}
public static void solutionB(Solution a, Solution b) {
String temp = a.value;
a.value = b.value;
b.value = temp;
}
}
solutionA / solutionB의 결과가 다른데 그 이유는 solutionA 메서드 호출 시에 사용한 인자 a, b와 solutionA() 메서드내의 매개변수 a, b 는 서로 다르기 때문. 위의 소스를 실행 해 보면 아래와 같은 결과가 나온다.
전 test1 | test2
후 test1 | test2
전 test1 | test2
후 test2 | test1
'프로그래밍 > Java' 카테고리의 다른 글
Spring - JWT 연동 (0) | 2022.05.05 |
---|---|
Mutable Object / Immutable Object(부제. String vs Stringbuffer/StringBuilder ) (0) | 2022.05.05 |
접근제어자 정리 (0) | 2022.05.05 |
Java 특징 및 장점 (0) | 2022.05.05 |
JAVA encoding 예제 (0) | 2022.05.05 |