รหัส 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
ตัวแปรเป็น pass by reference เพื่อหลีกเลี่ยงการเกิดเงาเช่นการสร้างสำเนาของตัวแปรเดียวกันดังต่อไปนี้:
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