Este código 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);
}
}
irá gerar este:
Número do brinquedo em jogo 5 Número do brinquedo em jogo após o incremento 6 Número do brinquedo no 5 principal
Em C ++, posso passar a toyNumber
variável como passagem por referência para evitar sombras, ou seja, criar uma cópia da mesma variável como abaixo:
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 a saída C ++ será esta:
Número do brinquedo em jogo 5 Número do brinquedo em jogo após o incremento 6 Número do brinquedo no 6 principal
Minha pergunta é - Qual é o código equivalente em Java para obter a mesma saída que o código C ++, visto que Java é passado por valor em vez de por referência ?
toyNumber
variável declarada no main
método não está no escopo do play
método. O sombreamento em C ++ e Java só acontece quando há aninhamento de escopos. Consulte en.wikipedia.org/wiki/Variable_shadowing .