2015-10-18 83 views
0

我不明白爲什麼第3行打印1在我寫的Test類中。 我以爲它會打印2而不是1,因爲我認爲第2行已將x的值更改爲2.+運算符 - Java按值傳遞

任何人都可以向我解釋這個嗎?這是與java被傳遞的價​​值,或者是一些其他的解釋?

public class Test{ 

    public static void main(String[] args) { 
     int x = 1; // line 1 
     System.out.println(x+1); //line 2 prints 2 
     System.out.println(x); //line 3 but why does this line prints 1? 

    } 

} 

輸出:

2 

1 
+0

你沒有改變的價值,你卻打印'X + 1',如果你想要的值更改嘗試做'X ++' – 3kings

+0

我想你混淆'''X ++'''和'''X + 1'''。前者是增量變量本身的值,後者只是返回一個遞增的值,但實際上並沒有增加變量本身。 – Siddhartha

+0

是的,它看起來像我一直在混淆x ++和x + 1。我將它與我創建的另一個測試程序進行比較,如下所示:int x = 1; \t \t System.out.println(++ x); //打印2 \t \t System.out.println(x); //打印2 –

回答

3

的解釋僅僅是x + 1不改變的x值,而是返回一個完全獨立的int其值大於x更大之一。

+0

感謝您的回覆。返回一個完整的獨立int對我有意義。 –

2

對於第2行,輸出爲2,因爲x已經爲1,並且您添加了另一個使其爲2但不改變x的值的另一個。 所以這就是在線3上的原因。

在第2行嘗試x ++並在第三行看到結果。

0

它是預期的。

您只是在打印x + 1。除非您明確將新值賦給x,否則x + 1不會修改x的值。

如果您更改代碼如下,您將得到所需的輸出。

x= x+1; 
System.out.println(x);