Java의 기본 요소에 대한 참조로 전달
Java는 참조로 전달을 활용하는 C와 달리 값으로 전달을 사용합니다. 이는 메소드의 기본 데이터 유형(예: int, float)을 수정해도 메소드 외부의 값에 영향을 주지 않는 시나리오를 만들 수 있습니다.
다음 Java 코드를 고려하세요.
public class XYZ { public static void main() { int toyNumber = 5; XYZ temp = new XYZ(); temp.play(toyNumber); System.out.println("Toy number in main " + toyNumber); } void play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); } }
이 코드는 다음을 인쇄합니다.
Toy number in play 5 Toy number in play after increment 6 Toy number in main 5
toyNumber 변수는 값으로 전달되기 때문에 play() 메서드 외부에서 수정되지 않습니다.
Java에서 참조로 전달의 대안:
기본 요소에 대해 Java에서 참조로 C 전달을 모방하기 위해 다음과 같은 몇 가지 옵션을 사용할 수 있습니다.
1. 공개 멤버 변수:
toyNumber에 대한 공개 멤버 변수를 사용하여 클래스를 생성하고 클래스에 대한 참조를 전달합니다.
class MyToy { public int toyNumber; }
void play(MyToy toy) { System.out.println("Toy number in play " + toy.toyNumber); toy.toyNumber++; System.out.println("Toy number in play after increment " + toy.toyNumber); }
2. 반환 값:
참조로 전달하는 대신 메서드에서 수정된 값을 반환합니다.
int play(int toyNumber) { System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); return toyNumber; }
기본 메서드에서 반환된 값을 사용하여 toyNumber를 업데이트합니다.
3. 클래스/정적 변수:
play() 및 main() 메서드가 동일한 클래스의 일부인 경우 toyNumber를 클래스 멤버 변수로 변환합니다.
4. 단일 요소 배열:
이것은 해킹이지만 단일 요소 배열을 전달하고 해당 값을 수정해야 합니다.
void play(int[] toyNumber) { System.out.println("Toy number in play " + toyNumber[0]); toyNumber[0]++; System.out.println("Toy number in play after increment " + toyNumber[0]); }
위 내용은 Java는 참조로 기본 요소를 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!