自动
1 短的变长的
2 表达式的自动类型转换
- 多种数据类型参与运算,其结果以大的数据类型为准
- byte, short, char 三种类型数据在和其他类型数据运算时,都会转换为int类型再运算(byte + byte也会是int + int)
强制
前面我们学习了自动类型转换,我们知道可以将数据类型小的数据可以直接赋值给数据范围大的变量。 那反过来,能不能将数据范围大的数据直接赋值给数据范围小的变量呢? 答案是会报错。
因为数据范围大的数据,赋值给数据范围小的变量,它有可能装不下;就像把一个大桶的水倒入一个小桶中,有溢出的风险。
- 什么是强制类型转换
但是你强行将范围大的数据,赋值给范围小的变量也是可以的,这里就需要用到强制类型转换。下面是强制类型转换的格式
目标数据类型 变量名 = (目标数据类型)被转换的数据;
问题1:下面的代码否有问题?
byte x = 10;
byte y = 30; x = x + y; //这句代码有问题,因为两个byte类型数据相加,会提升为int类型;
问题2:下面的代码是否有问题? byte x = 10; byte y = 30; x+=3;
//这句代码没有问题,因为这里有隐含的强制类型转换
//x+=3; 等价于 byte x = (byte)(x+y);