我最初理解引用的方式是,它们只是内存引用,保存着它们所持有的实际对象的内存位置。不过,下面的代码及其输出让我感到困惑。在这里您可以看到一个简单类 Man 的实现。
我在第一行创建了一个 Man 对象,引用名为 peter。peter 本身只是一个内存位置,对吧?所以人应该只是将对象存储在它所在的内存位置。
但是当我将另一个 Man 引用分配给 peter 并稍后更改 peter 的名字时,person 不知道这一点并打印名字。这怎么可能,因为它存储了 peter 的内存引用?它不应该能够跟随对其所做的更改吗?
public class Testing {
public static void main(String[] args) {
Man peter = new Man("brown", 182, 78000, "Peter");
Man person = peter;
peter = new Man("brown", 182, 78000, "Leonard");
System.out.println(person.name);
}
}
class Man {
String hairColor;
int height;
double salary;
String name;
public Man()
{
hairColor = "brown";
height = 180;
salary = 50500.5;
name = "John";
}
public Man(String hair, int high, double pay, String nam)
{
this.height = high;
this.hairColor = hair;
this.salary = pay;
this.name = nam;
}
}
慕容3067478
ABOUTYOU
千万里不及你
慕沐林林
至尊宝的传说
繁星coding
相关分类