Table of Contents
Java always passes parameter variables by value
Java always passes parameter variables by value
원시형
int, float, boolean 등은 당연히 값으로 파라미터에 전달됩니다.
클래스형
Java 는 참조형이 존재하지 않습니다.
그래서 클래스형도 값으로 파라미터에 전달됩니다.
그런데 주의할것은 값(value) 의 의미입니다.
클래스를 새로 생성해서 값으로 전달한다는 의미가 아니라,
클래스의 주소값(address value)을 전달하는 것입니다.
C 언어로 본다면 포인터를 전달하는 것과 동일한 효과가 되며,
결국 참조로 전달하는 것과 동일한 결과가 됩니다.
public class TestParameterByValue {
public static void main(String[] args) {
TestParameterByValue thread = new TestParameterByValue();
System.out.println("Test start!");
String a = "test1";
String s = "test2";
System.out.println(s.hashCode());
thread.test(s);
System.out.println("Test end!");
}
void test(String s) {
System.out.println(s.hashCode());
}
}
Test start!
110251488
110251488
Test end!