程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-無法將類型“int”隱式轉換為“byte”。

java-無法將類型“int”隱式轉換為“byte”。

編輯:編程綜合問答
無法將類型“int”隱式轉換為“byte”。
        byte a = 1;
        byte b = 2;
        byte c = 3;
        a = b + c;

為什麼最下面b,c變成int型了呢= =

最佳回答:


byte 表示一個字節,他的表示范圍[-128 127],
byte a = 1;
byte b = 2;
byte c = 3;

都在這個范圍之內,沒有問題。
這裡還有一個問題 就是我們寫的整數,沒有明確指出類型(比如說 byte b = 2;中的2) 系統默認是int的,
那麼為什麼不會編譯出錯呢,這裡( 我認為 )這個整數如果沒有超出范圍(比如 byte b = 2;在范圍之內),編譯系統有個自動轉換。
那麼a = b + c; ;怎麼又會編譯出錯呢,而且 a,b都是byte型的,這裡java又有自己的一個機制,就是防止兩個小數相加超出自己所表示的范圍,把a ,b變成 int 在相加。相加後也是int 型(注意這裡的int 和 上面說的沒有指出類型的整數默認是int 有區別,這裡相當於你自己實際定義的了 例 int c=0; 系統不會在將這種明確規定數據類型的數做出自動轉換的。轉換也要自己強制類型轉換c=byte(a+b); 這樣看來好像更符合防止兩個數相加超出自己表示范圍的機制)。
c=a+2;和c= a + b;情況差不多。
byte c=1+2;這個就好理解了,編譯器是把 1+2 看作一個整體的 就是3了,3

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved