我的一位教授给了我们几个练习题,其中一个问题的伪代码如下:
a.setColor(blue);
b.setColor(red);
a = b;
b.setColor(purple);
b = a;
//what color is a, and what color is b?
对我来说,这似乎非常基础,所以我建议答案是a为“红色”,b为“红色”,但被告知这是不正确的。我像解数学问题一样分解了我的答案:
a = 15;
b = 12;
a = b; //a becomes 12
b = 13;
b = a; //b becomes 12
但我的思考过程是通过C语言的思维方式,而不是Java。我认为有一些通用的方法适用于两种语言,但也许我错了?我的答案错了还是我的教授错了?虽然我对C、Python和Web逻辑(PHP、Ruby)有一些掌握,但我非常新手Java,所以如果这是一些微不足道的东西(它确实是),请原谅我。
a
和b
是具有setColor方法的对象。而在第二个例子中,它们是简单的整数原始类型。这两个例子并不相同,因为你正在处理不同的事物。 - Marc Bb
时,你同时也在改变a
(修改由a
和b
引用的对象)。 - Cold