? 第一個(gè)正確,第二個(gè)報(bào)錯(cuò)洛搀,第三個(gè)正確敢茁。根本原因就是 byte相計(jì)算的時(shí)候如果不進(jìn)行強(qiáng)制轉(zhuǎn)換,都會(huì)編譯錯(cuò)誤的留美。
??????? byte b=1彰檬,檢查右邊沒(méi)有超過(guò)byte的范圍(-128到127)。系統(tǒng)強(qiáng)轉(zhuǎn)為1為byte型;?????
??????? b=b+1谎砾,1默認(rèn)為int類型,b自動(dòng)轉(zhuǎn)型為int與1做加法逢倍,結(jié)果是int類型的。把int類型賦給byte類型b.順便說(shuō)一下景图,如果b=b+1改為b+=1就沒(méi)錯(cuò)了较雕。
??????? b += 1,其實(shí)等價(jià)于 b = (byte)(b+1);底層會(huì)對(duì)這個(gè)結(jié)果進(jìn)行強(qiáng)轉(zhuǎn)的,所以它編譯的時(shí)候沒(méi)事亮蒋,如果b是127扣典, 那么加1后變成128了,成了int類型了慎玖,超過(guò)了byte類型的最大范圍了贮尖,系統(tǒng)會(huì)強(qiáng)轉(zhuǎn),把int類型的 前面三個(gè)高位丟棄趁怔,丟棄后湿硝,如果剩下的一位中,最高位為1痕钢,則取反加一图柏,就成了負(fù)數(shù)了,如果最高位為0任连,直接把值賦給b 蚤吹。