Java数据类型转换
概述
java数据类型分为4类8种,不同类型之间相互转换存在一定的规则。
内容
- 自动类型转换:将小类型的数据转换成大类型数据,系统会自动转换;
short a=10;
int sum = a;
//short类型的a值自动转换成int类型;
- 强制类型转换:将大类型的数据转换成小类型的数据,会编译报错
int a=10;
short sum = a;
//上述代码执行时会出现编译报错:错误: 不兼容的类型: 从int转换到short可能会有损失
//解决办法,上述代码修改为
int a=10;
short sum=(short)a;
- byte/short/char特例:这3种类型在用int类型的常量赋值时,不需要进行强制转换,系统自动转换。但是所赋值的int类型常量值不能超过各自范围。
- byte/short 和 char 参与转换,都需要强制类型转换。
- 表达式类型提升:当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
int a;
short b=10;
a = b+20; //结果自动转换成int;
- 当byte short char 之间参与运算的时候,底层都会转换成int类型来计算
byte b=10;
short s=5;
char c = (char)(b+s);//b+s自动转换成int类型计算,int类型赋值给char类型,故需强制转换。
- boolean类型不能够参与运算和转换,编译时会报错。
- 字符串在参与运算中的转换问题,字符串相加是拼接操作。
String str = "22";
int a = 4;
System.out.println(str + a + 2);//结果为 2242
- 变量计算和常量计算问题
变量相加,系统无法判断具体的结果
常量相加,在编译时期,系统就会运算结果
//代码一:
byte b = 10+10; //无异常,正常赋值;
//代码二:
int a = 10;
int b = 10;
byte b = a + b;//编译报错,int类型无法转换成int,需要强制转换。