CS61B The Mystery of the Walrus

CS61B The Mystery of the Walrus

关于= (海象之谜)

先看两个示例:

1
2
3
4
5
6
Walrus a = new Walrus(1000, 8.3);
Walrus b;
b = a;
b.weight = 5;
System.out.println(a);
System.out.println(b);

这两个结果会是一样的嘛?

1
2
3
4
5
6
int x = 5;
int y;
y = x;
x = 2;
System.out.println("x is: " + x);
System.out.println("y is: " + y);

再看看这个呢?

结果如下:

1
2
3
4
5
weight: 5, tusk size: 8.30
weight: 5, tusk size: 8.30
x is: 2
y is: 5

为什么都是两个等于,结果却不一样?

=的意义是赋值。

对于第二个例子,我们可以理解这句话这句话,那第一个呢?其实仍然适用,只不过此时赋值的是地址。下图可以看的很形象:

20250902183448

box and pointer表示法

Java中所有的对象都是通过引用来操作的。