Kode Java ini:
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);
}
}
akan mengeluarkan ini:
Nomor mainan dalam permainan 5 Nomor mainan dalam permainan setelah peningkatan 6 Nomor mainan di 5 utama
Dalam C ++ saya dapat mengirimkan toyNumber
variabel sebagai referensi lewat untuk menghindari bayangan yaitu membuat salinan variabel yang sama seperti di bawah ini:
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;
}
dan keluaran C ++ akan menjadi ini:
Nomor mainan dalam permainan 5 Nomor mainan dalam permainan setelah peningkatan 6 Nomor mainan di 6 utama
Pertanyaan saya adalah - Apa kode yang setara di Java untuk mendapatkan output yang sama dengan kode C ++, mengingat bahwa Java adalah pass by value daripada pass by reference ?
toyNumber
variabel yang dideklarasikan dalam main
metode tidak berada dalam ruang lingkup dalam play
metode. Membayangi di C ++ dan Java hanya terjadi jika ada penumpukan cakupan. Lihat en.wikipedia.org/wiki/Variable_shadowing .