繁体   English   中英

了解Java,为什么会发生这种情况?

[英]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 因此,您真正(仅)要做的是:

  1. x设置为8
  2. y设置为8因为x具有此值
  3. x覆盖为4并且不改变y ,因为它们之间绝对没有连接
  4. 此时输出xy ,因此: 4,8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM