什么是输出,为什么?

时间:2013-03-02 10:32:45

标签: java

这两个陈述的结果是什么?我无法理解这是如何工作的。我会说数字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());

3 个答案:

答案 0 :(得分:2)

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

第二个声明将输出" Delmar"。这是因为B和A实际上指向同一个对象,当你更改a中的值时,你隐式改变b中的值。

答案 1 :(得分:1)

在第一个中,a的值被复制到b。因此,a之后的更改不会影响b

在第二个ab中引用相同的对象。因此,a之后的更改将反映在b

因此输出将是:32在第一种情况下,Delmar在第二种情况下。

答案 2 :(得分:0)

如果在添加后进行预处理,则会创建新对象。因此b将指向等于32的旧a。

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