[英]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.