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() 创建新的内存位置。现在已经创建了 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";
添加回答
举报