이 자바 코드 :
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 increement " + toyNumber);
}
}
다음과 같이 출력됩니다.
놀이 5 장난감 번호 기소 6 이후 놀이 장난감 번호 메인 5의 장난감 번호
C ++에서는 toyNumber
섀도 잉을 방지하기 위해 참조에 의한 전달로 변수를 전달할 수 있습니다. 즉, 아래와 같은 동일한 변수의 복사본을 생성합니다.
void main(){
int toyNumber = 5;
play(toyNumber);
cout << "Toy number in main " << toyNumber << endl;
}
void play(int &toyNumber){
cout << "Toy number in play " << toyNumber << endl;
toyNumber++;
cout << "Toy number in play after increement " << toyNumber << endl;
}
C ++ 출력은 다음과 같습니다.
놀이 5 장난감 번호 기소 6 이후 놀이 장난감 번호 메인 6의 장난감 번호
내 질문은 -Java가 참조로 전달하는 것이 아니라 값으로 전달되는 경우 C ++ 코드와 동일한 출력을 얻기 위해 Java에서 동등한 코드는 무엇입니까 ?
toyNumber
선언 된 변수가 main
메서드의 범위에 있지 않기 때문에 이것은 섀도 잉 이 아닙니다 play
. C ++ 및 Java의 섀도 잉은 범위가 중첩 된 경우에만 발생합니다. en.wikipedia.org/wiki/Variable_shadowing을 참조하십시오 .