簡體   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