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

+ Recent posts