Java에서 매개변수 전달은 본질적으로 값을 기준으로 이루어지므로 메서드 내에서 기본 변수를 교체하려고 할 때 문제가 발생합니다. .
<code class="java">void swap(int a, int b) { int temp = a; a = b; b = temp; }</code>
과 같은 순진한 구현은 실제로 메소드 외부의 원래 변수를 수정하지 않습니다. 이 문제를 해결하기 위해 다음과 같은 두 가지 색다른 접근 방식이 있습니다.
이 기술을 사용하면 메서드 호출에서 작업 순서를 활용하여 교체할 수 있습니다.
<code class="java">int swap(int a, int b) { // usage: y = swap(x, x=y); return a; }</code>
swap(x, x=y)를 호출하면 x 값은 x에 할당되기 전에 swap으로 전달됩니다. 따라서 a가 반환되어 y에 할당되면 x와 y의 값이 효과적으로 교환됩니다.
보다 일반화된 솔루션을 위해 일반 메서드를 정의할 수 있습니다. 동일한 유형의 객체를 원하는 만큼 교환할 수 있습니다:
<code class="java"><T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z); return args[0]; }</code>
이 메소드를 z = swap(a, a=b, b=c)로 호출하면 a, b 및 c의 값이 교환됩니다. , 최종 값을 z에 할당합니다.
위 내용은 매개변수 전달이 값에 의한 경우 Java에서 기본 변수를 어떻게 바꿀 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!