1
不是我想要的,但我想知道爲什麼一元運算符不直接使用Java中的值?爲什麼Unary Operators不能直接在Java的值上運行?
爲什麼result++;
工作如果int result = 0;
但result = 0++;
不工作?
我在docs
中可以找到的一點是,一元運算符只需要一個operand
,但操作數沒有明確的定義,它似乎可以是變量或值。
不是我想要的,但我想知道爲什麼一元運算符不直接使用Java中的值?爲什麼Unary Operators不能直接在Java的值上運行?
爲什麼result++;
工作如果int result = 0;
但result = 0++;
不工作?
我在docs
中可以找到的一點是,一元運算符只需要一個operand
,但操作數沒有明確的定義,它似乎可以是變量或值。
這不是一元運算符不工作 - 例如 - (+( - 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