怪我咯2017-04-18 10:39:36
JVM 사양의 한 섹션을 인용하고 자세한 내용은
을 참조하세요.메서드 선언에 선언된 모든 매개변수에 대해 해당 메소드가 호출될 때마다 새 매개변수 변수가 생성됩니다. 새 변수는 메소드 호출의 해당 인수 값으로 초기화됩니다.
사양에는 메소드가 호출될 때마다 메소드의 매개변수가 초기화된다고 나와 있습니다.
위 test
메서드의 index
은 Integer
유형의 변수를 초기화한 다음 전달된 i
을 가리킵니다. 다음 index = new Integer(20);
은 index
변수의 포인팅만 변경하고 i
의 원래 포인팅은 변경되지 않았습니다.
PHP中文网2017-04-18 10:39:36
Java의 메소드는 모두 값 전송을 사용합니다. 참조인 경우에도 전달되는 것은 원본 참조의 복사본입니다.
이 메소드는 매개변수 참조의 속성만 변경할 수 있으며 매개변수의 참조 주소는 변경할 수 없습니다.
Integer의 소스 코드를 볼 수 있습니다:
랩핑하는 값은 final에 의해 수정됩니다. 즉, 한 번만 할당할 수 있으며 할당 후에는 값이 변경되지 않습니다.
또한 문자열과 같은 다른 참조 유형을 시도하여 변경 가능한지 확인할 수 있습니다