基本数据类型转换
类型转换的方向都是取决于数据的存储范围
byte—>short—>int—>long—>float—>double
1.自动类型转换
将范围小的类型赋值给范围大的类型,不需要强转。例如将小水杯的水倒入到大水杯中
例如:
int a = 12;
double d ;
d = a; //能够通过编译不会报错
2.强制类型转换
将范围大的类型赋值给范围小的类型,需要强制类型转换。例如将大水杯的水倒入小水杯中。
强制类型转换格式:
目标类型 变量名=(目标类型)(被转换的数据);
例如:
int a;
double d = 12.5;
a = (int)d;
注意:强制类型转换可能出现两种情况
精度丢失
例如:
int i = (int)12.5;
System.out.println(i);
解析:结果i的值为12,小数点的数据丢失
数据溢出
例如:
byte b = (byte)128;
System.out.println(b);
解析:结果为 -128,数据溢出
3.表达式类型提升
当两个不同类型的数据参与运算时,范围小的数据类型默认会自动转换为范围大的数据类型之后再参与运算。
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
byte b = 10;
b = b + ‘A’
4.特例:byte a = 108; short s = 20;
该特例虽然右边为整型常量默认为int类型,左边是byte类型,属于大类型赋值给小类型,但是由于108属于-129-128之间,所以这里不需要强转
5.boolean类型不能转换为其他的数据类型
6.字符串和任何数据类型计算都是做拼接操作
字符串进行 + 连接的时候,也会进行类型的自动转换。
本质是字符串只能和字符串连接。
字符串可以和任意类型做连接是如何实现的呢?
编译器会将其他的任意的类型,都转换为 字符串之后,才和其他的字符串做连接。