我是一名java学习的初学者,我涉及到数据类型转换时有一个点把我难住了。
①当要把数据范围大的数据类型赋值给数据范围小的类型的时候需要强制类型转换。
所以就出现了类似 --》 int a = (int) 99.9;等表达式,那byte类型的数据范围比int类型的数据范围小,为何在赋值时不时 --》byte a = (byte)10;?而是直接的 --》 byte a = 10;呢?
int b=2;
byte b1=b;//b为int变量,无法直接赋值给byte
byte b2=2;//整数型常量且在byte范围内,编译自动默认为byte,通过
byte b3=288;//超出byte范围编译不通过
如果把一个较小的整数型常量(在byte或short范围内)赋值给byte或short,系统在编译时会自动将这个整数型常量当作byte或short来处理
byte的范围是 -128~127,在这范围内的话是正常的。超过这个范围才需要转换。int 类型和 long 类型,默认使用的是int, long 类型需要在后面加多 L 或者 l 以进行区分。
byte a = 10不是没转换,是自动转成byte了,系统看int型的10没有超过范围就没报错,自动给你转了,要是10000这种范围大的转不了就报错了