>  기사  >  Java  >  매개변수 전달이 값에 의한 경우 Java에서 기본 변수를 어떻게 바꿀 수 있습니까?

매개변수 전달이 값에 의한 경우 Java에서 기본 변수를 어떻게 바꿀 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 04:51:30427검색

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

Java에서 기본 변수 교체: 값 전달 극복

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의 값이 효과적으로 교환됩니다.

가변 매개변수가 있는 일반 Swapper

보다 일반화된 솔루션을 위해 일반 메서드를 정의할 수 있습니다. 동일한 유형의 객체를 원하는 만큼 교환할 수 있습니다:

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.