java關於a+=b與a=a+b的區別

今天看到一個題目a += b與 a=a+b的區別

看下面一段代碼
代碼Ajava

short a=4;
int b=5;
a += b;

代碼Bcode

short a=4;
int b=5;
a =a+b;

能夠告訴你:A編譯成功,B編譯失敗。
這裏沒有爲何,須要記住一點,+= 會對結果進行轉型,A代碼的結果是int,最後賦值給a的時候,會轉爲shot類型。
咱們看它的編譯後的二進制代碼:編譯

4: iconst_4   //加載常量4
  5: istore_1   //將常量4給第一個變量
  6: iconst_5  //加載常量5
  7: istore_2  //將常量5給第二個變量
  8: iload_1   //以int類型加載第一個變量到棧
  9: iload_2  //以int類型加載第二個變量到棧
 10: iadd    //彈出兩個變量進行相加,結果入棧
 11: i2s    //彈出一個變量,將int轉爲short
 12: istore_1  //將short類型的值給第一個變量

那麼 -=,*=,/=呢?class

相關文章
相關標籤/搜索