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.
添加回答
举报
