1

这两个语句的输出是什么。我无法理解这是如何工作的。我会说对于数字 1,b = 33。这就是说 a=a+1 所以 a = 33。b 等于 a,所以 b 也必须是 33?对于第二个,我会说 b = delmar。有点困惑,希望得到一些帮助,谢谢。

1:

int a;
int b;
a = 32;
b = a;
a = a + 1;
System.out.println(b);

2:

Person a;
Person b;
a = new Person("Everett");
b = a;
a.changeName("Delmar");
System.out.println(b.getName());
4

3 回答 3

2

第一条语句的输出是 32。这是因为 b 不是对象,所以 int 变量不代表指向对象的指针;它代表实际值。

第二条语句将输出“Delmar”。这是因为 B 和 A 实际上指向同一个对象,当你改变 a 中的一个值时,你就隐式地改变了 b 中的值。

于 2013-03-02T10:35:24.160 回答
1

在第一个中,值a复制到 b。所以后面的变化a不会影响b.

在第二个中,两者都ab代同一个对象。所以a后面的变化会体现在b.

所以输出将是:32在第一种情况下和Delmar在第二种情况下。

于 2013-03-02T10:36:22.610 回答
0

在添加后的 premetive 的情况下,将创建新对象。因此 b 将指向旧的 a,它等于 32。

但是在非 premetive Person 类的情况下,a 和 b 都指向同一个对象,因此对对象的任何更改都将被引用到两个参考变量。

于 2013-03-02T10:38:11.677 回答