类型 | 大小(字节) |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
boolean | 1 |
隐式转换:取值范围小的数与取值范围大的数做运算时,取值范围小的会自动提升为取值大的数的类型,再进行运算。
byte、short、char类型会自动提升为int再进行计算。
byte a=1;
byte b=1;
byte c=(a+b);
System.out.println(c);
解决方法:
将c的类型修改为int。
int c=(a+b);
或者使用 强制类型转换
byte c=(byte)(a+b)
强制类型转换:把一个取值范围大的数值或者变量,赋值给另一个取值范围小的变量,不允许直接赋值,需要加入强制转换
格式 : 类型 变量名 = (需要转换的类型) 表达式
//shrot类型的b与int类型a相加并赋值给b时,会报错,因为(a+b)的类型是int型,无法赋值给short型。
short b=1;
int a=1;
b=a+b;
System.out.println(b);
解决办法:
byte c=(byte)(a+b)