在Java中,byte類型數據在運算之前要轉換成int類型數據。
比如:
byte a=1;
byte b=2;
byte c;
c=a+b; //這樣是計算不出c,是錯誤的
c=a+1; //這樣也是不能計算c的
c=64+1; //為什么這樣就能計算c,在Java中這是什么原理啊?
運算符對基本類型的影響
當使用+、-、*、/、%運算符對基本類型進行運算時,遵循如下規則:
只要兩個操作數中有一個是double類型的,另一個將會被轉換成double類型,並且結果也是double類型;
否則,只要兩個操作數中有一個是float類型的,另一個將會被轉換成float類型,並且結果也是float類型;
否則,只要兩個操作數中有一個是long類型的,另一個將會被轉換成long類型,並且結果也是long類型;
否則,兩個操作數(包括byte、short、int、char)都將會被轉換成int類型,並且結果也是int類型。
原文來自:雨楓技術教程網
http://www.fengfly.com
原文網址:
http://www.fengfly.com/plus/view-170775-1.html
c=a+b時,符合第四個項,a+b的結果將轉為int類型,把int賦值給byte是不可以的
c=a+1時,同樣符合第四項
至於c=64+1,64+1是個在編譯時就可以確定的常量,而且范圍沒有超出byte的取值范圍,這個關系式就相當於c=65,因而不會報錯