Этот код 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 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 .