Java 매개변수 전달: 값 대 참조
Java에서 매개변수 전달 의미 체계는 "ref" 키워드가 있는 C#과 같은 언어와 다릅니다. 참조 전달을 명시적으로 나타냅니다.
참조를 둘러싼 혼란 전달
참조 유형의 매개변수(예: 객체)가 실제로 참조로 전달되기 때문에 Java의 "값별 전달" 특성은 개발자를 혼란스럽게 합니다. 그러나 이 "참조"는 단순히 개체 자체가 아닌 개체의 메모리 위치입니다.
값 전달 데모
다음 코드 조각을 고려하세요.
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; }
이 코드는 mutate 메소드의 "o" 매개변수가 실제로 참조하기 때문에 "Hello"를 콘솔에 인쇄합니다. 원본 참조 사본에. 이 복사본에 새 값을 할당해도 원본 개체의 값에는 영향을 미치지 않습니다.
참조 수정을 위한 대체 옵션
원본 개체를 수정하려면 다음 두 가지 옵션이 있습니다.
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); // Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
위 내용은 Java의 매개변수 전달은 진정한 값별 전달인가요, 아니면 좀 더 미묘한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!