gpt4 book ai didi

java - 为什么执行代码后bike1,3的值是?

转载 作者:行者123 更新时间:2023-11-29 05:05:39 25 4
gpt4 key购买 nike

当您运行以下代码时,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com