这两个陈述的结果是什么?我无法理解这是如何工作的。我会说数字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());
答案 0 :(得分:2)
第一个语句的输出是32.这是因为b不是一个对象,所以int变量不代表指向一个对象的指针;它代表了实际价值。
第二个声明将输出" Delmar"。这是因为B和A实际上指向同一个对象,当你更改a中的值时,你隐式改变b中的值。
答案 1 :(得分:1)
在第一个中,a
的值被复制到b。因此,a
之后的更改不会影响b
。
在第二个a
和b
中引用相同的对象。因此,a
之后的更改将反映在b
。
因此输出将是:32
在第一种情况下,Delmar
在第二种情况下。
答案 2 :(得分:0)
如果在添加后进行预处理,则会创建新对象。因此b将指向等于32的旧a。
但是在非premetive Person类的情况下,a和b都指向同一个对象,因此对对象的任何更改都将被转换为两个引用变量。