6 回答

TA貢獻1773條經驗 獲得超3個贊
這里:
Man peter = new Man("brown", 182, 78000, "Peter");
創建一個名為“Peter”的 Man對象。
Man person = peter;
創建另一個變量“指向”上面創建的對象。
peter = new Man("brown", 182, 78000, "Leonard");
創建另一個名為 Leonard 的 Man,然后peter
變量“指向”那個新的第二個對象。
注意:person
沒有“指向”到peter
. 它指向內存中的 Man “對象”。
將另一個 “內存地址”放入變量中peter
不會更改您創建的初始對象。

TA貢獻1812條經驗 獲得超5個贊
將引用視為內存地址。我希望這個例子解釋:
Man peter = new Man("brown", 182, 78000, "Peter");
// Create a new Man object which is placed in (for example) memory location 100
// Assign 100 to peter
Man person = peter;
// Assign 100 to person (copying it from peter)
peter = new Man("brown", 182, 78000, "Leonard");
// Create a new Man object which is placed in memory location 120
// 120 is assigned to peter
System.out.println(person.name);
// person still contains 100, so this prints out the details of the first object

TA貢獻1784條經驗 獲得超9個贊
使用 peter=new Man() 創建新的內存位置?,F在已經創建了 2 個內存位置,比如說 100 和 200。仍然有人指向 peter 內存位置 100。因此它顯示第一個構造函數名稱 peter。
如果您想將 nam 值顯示為 Leonardm,請在下面添加行賦值
人 = 彼得;
System.out.println(person.name);

TA貢獻1797條經驗 獲得超4個贊
Man peter = new Man("brown", 182, 78000, "Peter");
Man person = peter;
peter = new Man("brown", 182, 78000, "Leonard");
第一行將引用分配給名稱為“Peter”的對象,第二行將先前的對象引用分配給變量person。
在第三行中,您創建了一個新對象并將對它的引用分配給變量peter,這是一個全新的引用,而變量person仍然保留前一個對象的引用。
如果你想在兩個變量中都有名字“Leonard”,而不是創建一個新對象,你可以在第三行
person.name = "Leonard";
添加回答
舉報