先看一下下面的语句那些是非法的。
byte b1=2;
byte b2=1+1;
byte b3=b1+1;
byte b4=b1++;
int i1=Integer.MAX_VALUE+1; //Integer.MAX_VALUE=2147483647
int i2=2147483648;
把byte改为char和short几乎是一样的。
因为整数字面常量是int型的,也就是1和2都是int型的
在赋值语句中直接把一个int型赋给byte肯定是不行的。
int i=1;
byte b=i;
是编译不过的,因为隐性类型转换不允许,改为下面的就可以了
int i=1;
byte b=(byte)i;
隐性转换一般都是放宽转换(如byte到int,String到Object)
但是却有一个例外就是,在赋值转换中,
隐性转换也包含了缩窄基本转换。
就是从int到byte,char,short的转换:
比如:
byte b=1;//合法
byte b=128; //非法
右边必须为int型字面常量,而且值必须能被左边类型表示
byte b1=2;
byte b2=1+1;
byte b3=b1+1;
byte b4=b1++;
int i1=Integer.MAX_VALUE+1; //Integer.MAX_VALUE=2147483647
int i2=2147483648;
把byte改为char和short几乎是一样的。
因为整数字面常量是int型的,也就是1和2都是int型的
在赋值语句中直接把一个int型赋给byte肯定是不行的。
int i=1;
byte b=i;
是编译不过的,因为隐性类型转换不允许,改为下面的就可以了
int i=1;
byte b=(byte)i;
隐性转换一般都是放宽转换(如byte到int,String到Object)
但是却有一个例外就是,在赋值转换中,
隐性转换也包含了缩窄基本转换。
就是从int到byte,char,short的转换:
比如:
byte b=1;//合法
byte b=128; //非法
右边必须为int型字面常量,而且值必须能被左边类型表示
博客主要探讨Java中byte类型赋值的合法性,如byte b3=b1+1等语句非法,还提及将byte改为char和short情况类似。指出整数字面常量是int型,直接将int赋给byte编译不过,需强制转换。同时说明隐性转换一般是放宽转换,但赋值转换中有缩窄基本转换。
187

被折叠的 条评论
为什么被折叠?



