Board logo

標題: 有关JAVA中byte的小疑惑 [列印本頁]

作者: krave    時間: 2013-10-23 01:03     標題: 有关JAVA中byte的小疑惑

想了解一下,为什么
int i = Integer.MAX_VALUE +1;

这一句不会报错,而

byte b = Byte.MAX_VALUE+1;

会报Unresolved comilation problem错呢?

需要:byte
找到:int

PS:不晓得这个版块是不是适合初心者发问...
作者: codedata    時間: 2013-10-23 07:19

整數相加,一徑 promote 至 int 型態運算,最後結果是 int,因而放不入 byte,加上 cast 就可以了…
  1. byte b = (byte) (Byte.MAX_VALUE+1);
複製程式碼


只不過就這個例子來說,相加運算後因為超出了 byte 範圍,變數 b 容納不下而失去精度,最後結果也會是不正確的。
作者: krave    時間: 2013-10-25 01:18

整數相加,一徑 promote 至 int 型態運算,最後結果是 int,因而放不入 byte,加上 cast 就可以了…

只不 ...
codedata 發表於 2013-10-23 07:19



    哦~~~ 原来是这样
错误的原因原来并不是计算的值过大越界,而是因为promote了的关系。
作者: caterpillar    時間: 2013-10-25 10:06

參考一下 Promotion 與 Cast
http://openhome.cc/Gossip/JavaEssence/PromotionCast.html




歡迎光臨 CodeData 技術論譠 (http://codedata.com.tw/forum/) Powered by Discuz! 7.2