为了账号安全,请及时绑定邮箱和手机立即绑定

Java 运算符,+ - 下面的代码中发生了什么以及为什么这样写

Java 运算符,+ - 下面的代码中发生了什么以及为什么这样写

扬帆大鱼 2022-07-20 15:48:39
在我们的java代码中,我遇到了一行我不明白为什么total = + - valFromsp; 或 总计 = - + valFromsp; 所以我写了一个小程序并附在这里。public class Test {    public static void main (String... arg) {        int total =  20;        int valFromsp = 60 ;         total = + - valFromsp;        System.out.println(total);  // prints -60    }}
查看完整描述

2 回答

?
慕村225694

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;

以免日后混淆。


查看完整回答
反对 回复 2022-07-20
?
元芳怎么了

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.


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号