[英]Understanding Java, why does this happen?
int x = 8;
int y = x;
x = 4;
System.out.println(x + ", " + y);
您好,我正在尝试自学Java的一些基础知识,目前正在研究此示例。 在此,我知道输出将是:4,8
但是我不知道为什么会这样,为什么第一个x是4而不是8?
如果我也将int x更改为其他内容,那么也会使代码不兼容。 我本以为,因为似乎与x = 4参数不同,所以如果int x更改了,那没关系?
如果int x以某种方式依赖x = 4行,那么为什么输出是4、8而不是8、8? 我不知道为什么x = 4对其余代码有影响?
非常感谢您在此问题上的任何帮助。
逐行查看发生的情况可能会更容易:
int x = 8; // Declare your variable "x" and save 8 into it.
int y = x; // Assign the value of x to the new variable y.
// at this point, y = 8 and x = 8. Note that the value of
// x does not change.
x = 4; // Now set the value of x to 4. y is still 8 and x is now 4.
在Java中,当使用等号时,这可能意味着不同的事情,具体取决于您是使用对象还是基元。 “对象等于对象”意味着第一个对象引用等于第二个对象引用-因此,如果修改一个对象引用,第二个对象引用也将被修改。 但是,当您等于两个图元时,您将第二个值分配给第一个,因此,当您修改一个时,第二个值将保持不变。
好,假设您正在踢足球比赛。 直到“ int x = 8;”为止 您没有参与其中,您是替补。 然后经理告诉您“进去穿黄色衬衫”。 因此,这里您穿着一件黄色衬衫。 我称黄色为“ 8”。 在下一分钟,经理告诉您,“再给黄色衬衫给y”。 您也可以这样做。 现在,您x和y都穿着黄色衬衫。 一段时间后,经理告诉您“看到黄色,穿上它,再穿黑色衬衫就足够了”。 这里的“黑色”表示4。然后就穿上它。
裁判现在问:“嘿,x和y,您的衬衫是哪种颜色?”。
您将黑色告诉x。 y告诉黄色。 我是说4、8
这只是我知道的一个虚拟示例,但有时将真实示例与代码连接起来非常有用。
另一件事,java有两个变量值类型。 基元和参考。 请看一下这个话题。 如果您了解这一点真的很好,那么您将毫无疑问地了解这种代码段。
为什么不应该有4,8
以外的其他输出? 在Java中,没有像引用这样的概念,您可能会从C ++那里听到类似的信息,即使这样,输出也将是4,4
。 因此,您真正(仅)要做的是:
x
设置为8
y
设置为8
因为x
具有此值 x
覆盖为4
并且不改变y
,因为它们之间绝对没有连接 x
和y
,因此: 4,8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.