版权声明:转载需要经过本人同意 https://blog.csdn.net/qq_35499112/article/details/84305149
一,强制类型转换
1特点;不能自动完成,代码需要特殊格式处理
2格式:范围小的类型 范围小的变量名 =(范围小的类型) 原本范围大的类型;
1,不建议使用强制类型转换,可能会造成数据损失
例如:左边int类型右边long类型
int num=100L;//编译会报错(数据类型不兼容,从long到int会发生数据损失)
//long强制转化成int
int num1=(int)100L;
System.out.println(num);//输出100
注意long强制转化成int时不能超过int的范围,否则会出现数据损失,例如:
//long强制转化成int
int num1=(int)60000000000000L;
System.out.println(num);//输出会小于上面的数
double向int类型转换,可能损失精度
int num=(int)8.9;//num结果是8
2,byte/short/char可以进行数学运算
例如加法运算
char a='A';
System.out.println(a+1);//结果输出66
计算机底层会用一个数字(二进制)65来代表字符A,一旦字符进行算术运算(如果有字符串就不会转化成数字,会直接进行字符串拼接),就自动转换成数字65
3,byte/short/char可以进行数学运算时会先被提升为int类型,然后在进行计算
byte num1=30;//注意byte的范围
byte num2=50;
byte num3=num1+num2;
System.out.println(num3);//会报错
理论上num1+num2=80在byte的范围内。但实际上是数据类型变成了int+int类型,因此num3需要用int类型来接收
int num3=num1+num2;
short类型和byte的运算
short num1=30;
byte num2=10;
short num=(short)(num1+num2);
num1+num2也先被提升为int类型+int类型,所以需要强制类型转换成short类型。
注意:强制类型转换时,逻辑上的数字不能超过short的范围
4,boolean类型不能进行强制类型转换