Questo codice 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);
}
}
produrrà questo:
Numero del giocattolo in gioco 5 Numero del giocattolo in gioco dopo l'accordo 6 Numero del giocattolo nella parte principale 5
In C ++ posso passare la toyNumber
variabile come passaggio per riferimento per evitare lo shadowing, ovvero creare una copia della stessa variabile come di seguito:
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;
}
e l'output C ++ sarà questo:
Numero del giocattolo in gioco 5 Numero del giocattolo in gioco dopo l'accordo 6 Numero del giocattolo nella parte principale 6
La mia domanda è: qual è il codice equivalente in Java per ottenere lo stesso output del codice C ++, dato che Java viene passato per valore anziché per riferimento ?
toyNumber
variabile dichiarata nel main
metodo non è nell'ambito del play
metodo. Lo shadowing in C ++ e Java si verifica solo quando è presente l'annidamento degli ambiti. Vedi en.wikipedia.org/wiki/Variable_shadowing .