2016-11-28 80 views
2

任何人都可以解释当你使用= +时发生了什么?Java中= +和+ =之间的区别?

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 

为什么是1号线2?

+1

'sum1 = + two'类似于sum1 = 0 + two','sum2 + = 1'类似于sum2 = sum2 + one'。这可能与JLS有重复,因此我不想将它作为答案发布。 – Pshemo

+1

'= +'什么都不做;这里和'='一样。你刚才写了'sum1 = two'。另一方面'sum2 + = one'基本上与'sum2 = sum2 + one'相同。 – Gendarme

回答

0

Java并不在乎太多的空白。 =+被解释为=作为赋值,+被解释为一元加运算符,在这里没有任何效果。这是一个很少使用的运营商,你可以看到正是它在这里http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.3

你可以阅读更多关于Java的这里https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html

+2

我不认为'+'是转换为正数。它似乎没有做任何事情。我试过'int a = -5; System.out.print(+ a);'并打印'-5'。 'System.out,print(-a)',但是会打印'5'。 – Gendarme

3

不同的运营商这样做

sum1 += one ; 

是一样的sum1 = (sum1_type)(sum1 + one);

,做这个

sum2 =+ two ; 

并且这样做sum2 = two;(Unary plus operator;表示正值) 并且不影响变量的符号两个

+2

“'sum1 + = 1;'与sum1 = sum1 + one相同;'”不,它是不一样的,它是相似的但不相同。反例可以在这里找到:http://stackoverflow.com/questions/8710619/javas-compound-assignment-operators – Pshemo

+0

他们都是ints ....所以它是一样的... –

+0

好吧,你是对的这个案件所以'+ 1',但值得记住的是,它并不总是相同的所有情况。 – Pshemo