Цей код 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 .