Java always passes parameter variables by value.

By | 2021년 11월 28일
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!

답글 남기기