【Java面試題】57 short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?

Java規(guī)范有這樣的規(guī)則:

  1. 高位轉(zhuǎn)低位需要強制轉(zhuǎn)換
  2. 低位轉(zhuǎn)高位自動轉(zhuǎn).
short s1 = 1;
s1 = s1 + 1;  有什么錯敲街?

short s2 = 1;
s2 += 1;

short s1 = 1; s1 = s1 + 1;有什么錯?
s1是short型茫因,1是short型膝宁,通過+運算符,計算的時候s1轉(zhuǎn)換為int型买羞,最后把s1+1賦值給s1的時候峻贮,s1是short型,所以出錯澎粟。
short s1 = 1; s1 += 1;有什么錯?
如果你認為表達式x+=i只是表達式x=x+i的簡寫方式蛀序,這并不準確。
這兩個表達式都被稱為賦值表達式捌议。x=x+i表達式使用的是簡單賦值操作符=哼拔,而x+=i表達式使用的是復合賦值操作符。Java語言規(guī)范中講到瓣颅,復合賦值E1 op =E2等價于簡單賦值(E1=(T)((E1) op (E2)))倦逐,其中T是E1的類型,除非E1只被計算一次。換句話說檬姥,復合賦值表達式自動地將所執(zhí)行計算的結(jié)果轉(zhuǎn)型為其左側(cè)變量的類型曾我。如果結(jié)果的類型與該變量的類型相同,那么這個轉(zhuǎn)型不會造成任何影響健民。然而抒巢,如果結(jié)果的類型比該變量的類型要寬,那么復合賦值操作符將悄悄地執(zhí)行一個窄化原生類型轉(zhuǎn)換秉犹。
因此蛉谜,復合賦值表達式可能是危險的。為了避免這種令人不快的突襲崇堵,請不要將復合賦值操作符作用于byte型诚、short或char類型的變量。 因為s1是short型的鸳劳,占2個字節(jié)狰贯,而1是int型的,占4個字節(jié)。在兩個類型的值相加的時候赏廓,會發(fā)生自動類型的提升涵紊,也就是說s1+1后,其結(jié)果是int型的幔摸,而不是short型的摸柄,所以可以想想看,把4個字節(jié)的東西放在兩個字節(jié)的空間里既忆,肯定編譯不通過塘幅。

后面的那個不會發(fā)生類型的提升,JAVA規(guī)范上說e1+=e2實際上是e1=(T1)(e1+e2) 尿贫,其中T1是e1的數(shù)據(jù)類型。 s1+=1等效于s1=(short)(s1+1),所以是正確的踏揣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庆亡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捞稿,更是在濱河造成了極大的恐慌又谋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娱局,死亡現(xiàn)場離奇詭異彰亥,居然都是意外死亡,警方通過查閱死者的電腦和手機衰齐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門任斋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耻涛,你說我怎么就攤上這事废酷∥灵荩” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵澈蟆,是天一觀的道長墨辛。 經(jīng)常有香客問我,道長趴俘,這世上最難降的妖魔是什么睹簇? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮寥闪,結(jié)果婚禮上太惠,老公的妹妹穿的比我還像新娘。我一直安慰自己橙垢,他們只是感情好垛叨,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柜某,像睡著了一般嗽元。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喂击,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天剂癌,我揣著相機與錄音,去河邊找鬼翰绊。 笑死佩谷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的监嗜。 我是一名探鬼主播谐檀,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裁奇!你這毒婦竟也來了桐猬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刽肠,失蹤者是張志新(化名)和其女友劉穎溃肪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體音五,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡惫撰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了躺涝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厨钻。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莉撇,到底是詐尸還是另有隱情呢蛤,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布棍郎,位于F島的核電站其障,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涂佃。R本人自食惡果不足惜励翼,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辜荠。 院中可真熱鬧汽抚,春花似錦、人聲如沸伯病。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽午笛。三九已至惭蟋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間药磺,已是汗流浹背告组。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留癌佩,地道東北人木缝。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像围辙,于是被迫代替她去往敵國和親我碟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.什么是Java虛擬機?為什么Java被稱作是“平臺無關(guān)的編程語言”桥胞? java虛擬機是一個可以執(zhí)行java字節(jié)...
    晨星資源閱讀 507評論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法考婴,內(nèi)部類的語法贩虾,繼承相關(guān)的語法,異常的語法沥阱,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,529評論 3 93
  • 集合框架: 1)特點:存儲對象缎罢;長度可變;存儲對象的類型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang閱讀 1,261評論 0 4
  • 一策精、Java基礎(chǔ)部分 1舰始、面向?qū)ο蟮奶卣饔心男┓矫? a.抽象:抽象就是忽略一個主題中與當前目標無關(guān)的那些方面,以...
    huststl閱讀 380評論 0 1