2015-10-04 24 views
1

不是我想要的,但我想知道爲什麼一元運算符不直接使用Java中的值?爲什麼Unary Operators不能直接在Java的值上運行?

爲什麼result++;工作如果int result = 0;result = 0++;不工作?

我在docs中可以找到的一點是,一元運算符只需要一個operand,但操作數沒有明確的定義,它似乎可以是變量或值。

回答

8

這不是一元運算符不工作 - 例如 - (+( - 5))的罰款。

++不只是計算值 - 其目的是爲了增加一個變量。 0不是一個變量。

JLS 15.14.2(後綴增量操作者++)

後綴表達式的結果必須是這種類型的一個變量,它是可兌換(§5.1.8),以數字類型,或編譯時錯誤發生。

注意,這不只是文字,無論是。你可以這樣做:

String x = "foo"; 
x.length()++; // wrong! 

因爲再次,x.length()不屬於一個變量。

但是你可以使用其他一元運算符,如

String x = "foo"; 
int y = -x.length(); // Unary - operator... that's fine 
相關問題