Ce code 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);
}
}
affichera ceci:
Numéro de jouet en jeu 5 Numéro de jouet en jeu après incrément 6 Numéro de jouet dans le 5 principal
En C ++, je peux passer la toyNumber
variable comme passe par référence pour éviter le shadowing, c'est-à-dire créer une copie de la même variable que ci-dessous:
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;
}
et la sortie C ++ sera la suivante:
Numéro de jouet en jeu 5 Numéro de jouet en jeu après incrément 6 Numéro de jouet dans le 6 principal
Ma question est la suivante: quel est le code équivalent en Java pour obtenir la même sortie que le code C ++, étant donné que Java est un passage par valeur plutôt que par référence ?
toyNumber
variable déclarée dans la main
méthode n'est pas dans la portée de la play
méthode. L'observation en C ++ et Java ne se produit qu'en cas d'imbrication des étendues. Voir en.wikipedia.org/wiki/Variable_shadowing .