int a = 1;
byte b = 1;
short c = 23;
long d = 123;
b = (byte)a;
c = (short)a;
为什么不用强转字面量 ,但变量之间却需要强转?
int a = 1;
byte b = 1;
short c = 23;
long d = 123;
b = (byte)a;
c = (short)a;
为什么不用强转字面量 ,但变量之间却需要强转?
整数类型都是有区间的
转换的时候
大的赋值给小的
可能会造成精度缺失
例如:a = d;
d中的long类型可能会大于int所以要进行强转
但是如果超出范围,会出现不匹配的情况
例如:int a = 178; byte b = 2;
byte b = (byte)a;
因为byte的范围是-128~127
所以赋值后不会输出178
而是进行一些二进制的操作输出的另一个数字
小的赋值给大的
例如:d = a;
因为a的值无论有多大,都是在int区间的,而int是肯定小于long的所以就可以省略了