Java 变量前面的减号是否使第一个变量为负数?

Java 变量前面的减号是否使第一个变量为负数?,java,Java,我们被要求使用int变量使答案等于20。我们只需要改变加号和减号的位置。在int a前面有一个负号。这会使int变成负数吗 我已经猜到了答案,但我的Google没有达到标准。 公共静态INTA=1; 公共静态int b=3; 公共静态int c=9; 公共静态int d=27; 公共静态无效字符串[]args{ int result=-a+b-c+d; } 实际制作负片的唯一方法是重新分配负片: a = -Math.abs(a); 要获得更详细的答案,请查看java语言规范,您可以在其中找到有

我们被要求使用int变量使答案等于20。我们只需要改变加号和减号的位置。在int a前面有一个负号。这会使int变成负数吗

我已经猜到了答案,但我的Google没有达到标准。 公共静态INTA=1; 公共静态int b=3; 公共静态int c=9; 公共静态int d=27; 公共静态无效字符串[]args{ int result=-a+b-c+d; } 实际制作负片的唯一方法是重新分配负片:

a = -Math.abs(a);
要获得更详细的答案,请查看java语言规范,您可以在其中找到有关如何在java中对运算符和表达式求值的详细信息:

在表达式中:

- a + b - c + d
有3种不同的操作符,从左到右:

二元加运算符 通常,一元运算符的优先级高于二元运算符,因此此表达式等效于:

(( (- a) + b) - c) + d
因此,一元-适用于a。从上面的链接规范:

在运行时,一元减表达式的值是操作数提升值的算术求反


所以,它不会产生一个负数,它会产生一个表达式,它的值是a的负数。这恰好是负值,因为a有一个正值。但是,它不会生成任何东西,a保持不变。

运行此代码时,结果的值是多少?int a=3;System.out.println-a;看看你自己,你有没有试着玩弄它,看看会发生什么?值是20。当然还有@Tomerikoo。除了把它弄明白,没有别的解释。我知道不要到这里来,也没有试着自己去弄清楚。我只是说,一个简单的序列:a=1->System.out.printlna->System.out.println-a等等将帮助你自己理解发生了什么。哪个更令人满足:谢谢你的解释。