Java中=+和+=的区别是什么?

7
有人能解释一下使用=+时发生了什么吗?
int one = 1 ;
int two = 2 ;

int sum1 = 0 ;
int sum2 = 0 ;

sum1 =+ one ;
sum2 += two ;

sum1 =+ two ;
sum2 += one ;

System.out.println(sum1) ;
System.out.println(sum2) ;

输出:

2
3

为什么第一行是2?

1
sum1 =+ two 类似于 sum1 = 0 + twosum2 += one 类似于 sum2 = sum2 + one。可能已经有 JLS 中的重复内容了,所以我不想将其发布为答案。 - Pshemo
1
=+ 没有任何作用,它在这里与 = 相同。你刚刚写了 sum1 = two。另一方面,sum2 += one 本质上与 sum2 = sum2 + one 相同。 - RaminS
2个回答

11

做这个

sum1 += one ;

sum1 = (sum1_type)(sum1 + one); 相同。

并且执行此操作

sum2 =+ two ;

与此相同

并执行此操作 sum2 = two; (一元加运算符;表示正值) 不会影响变量 two 的符号。


3
"sum1 += one ; 等同于 sum1 = sum1 + one ;" 不是完全相同,它们是相似但不同的。可以在这里找到反例:https://dev59.com/BGoy5IYBdhLWcg3wMLSj - Pshemo
它们都是整数...所以是一样的... - ΦXocę 웃 Пepeúpa ツ
好的,你在这个案例中是正确的,所以+1,但值得记住的是,并非所有情况都是如此。 - Pshemo

3

3
我认为 + 并不能将数字转换为正数,它似乎并没有任何作用。我尝试了 int a = -5; System.out.print(+a); 但它打印出的是 -5。然而, System.out.print(-a) 打印出的确实是 5 - RaminS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接