当您运行以下代码时,bike1 和 bike2 的齿轮值都更改为 3。你能解释为什么吗? 我自己的猜测是因为 bike1 和 bike2 是对象变量并且实际上不包含任何值,它们只是引用(标签)。当它们被分配为彼此相等时,它们都变为 3。我说得对吗?
class Bicycle{
int gear = 0;
void changeGear(){
gear = 3;
}
}
public class BicycleApp {
public static void main(String[] args) {
//Create bike 1
Bicycle bike1 = new Bicycle();
System.out.println(bike1.gear);
//Create bike 2
Bicycle bike2 = bike1;
System.out.println(bike1.gear);
//Call the method
bike2.changeGear();
System.out.println(bike2.gear);
System.out.println(bike1.gear);
}
}
最佳答案
这里:
Bicycle bike2 = bike1;
您引用的 bike2 对象与 bike1 的引用相同,然后您换档。所以无论你在 bike2 或 bike1 上做什么,你都会在两个对象上看到相同的效果。所以你可以这样做:
Bicycle bike2 = new ...;
目前是这样的:
|bike1 at address1|
| gear 0 |
将 bike2 分配给 bike1
|bike1 at address1|
| gear 0 |
/\
|
|bike2 referring bike1|
关于java - 为什么执行代码后bike1,3的值是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462239/