2 回答

TA貢獻1880條經驗 獲得超4個贊
它只是意味著這個:
total = -valFromsp;
這行代碼是一個賦值語句,右側表達式為+ - valFromsp。是什么+ - valFromsp意思?如果我們添加括號,它會變成+(-(valFromsp)).
一元運算符對使它-的操作數進行操作。然后一元運算符對它不做任何操作。valFromsp-60+-60
+和-一元運算符在Java 語言規范的§15.15中指定:
運算符 +、-、++、-、~、! 和強制轉換運算符(第 15.16 節)稱為一元運算符。
UnaryExpression:
PreIncrementExpression
PreDecrementExpression
+ UnaryExpression
- UnaryExpression
UnaryExpressionNotPlusMinus
§15.15.3+進一步規定了一元運算符的使用:
一元數字提升 ( §5.6.1 ) 在操作數上執行。一元加表達式的類型是操作數的提升類型。一元加號表達式的結果不是一個變量,而是一個值,即使操作數表達式的結果是一個變量。
但是由于您使用int的是不進行一元數字提升的 s,+所以什么也不做。即使你使用byte, shortor char,+仍然不會做任何事情,因為-一元運算符也做提升。所以真的沒有任何理由同時使用+兩者-。
我建議您將其更改為:
total = -valFromsp;
以免日后混淆。

TA貢獻1798條經驗 獲得超7個贊
讓我從一個簡單的例子開始解釋這個,考慮
total = + valFromsp;
上面的線意味著total = total + valFromsp;
類似于這total = - + valFromsp意味著
total = - (total + valFromsp);
現在您可以再次將其進一步擴展為total = total - (total + valFromsp)
考慮下面給出相同輸出的示例
int total = 10;
int val = 50;
//total = - + val; //this is also equals to the below line
total = total - (total + val);
System.out.println(total); //output -50.
添加回答
舉報