2016-11-28 78 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