Java基本数据类型转换学习总结
本周学习了Java的基本数据类型转换,分为自动类型转换和强制类型转换。
一、8种基本数据类型(字节大小,容量从小到大)
1. byte 1字节(8位)
2. short 2字节(16位)
3. char 2字节(16位)
4. int 4字节(32位)
5. long 8字节(64位)
6. float 4字节(32位)
7. double 8字节(64位)
规则:容量小 → 容量大,可以自动转换;容量大 → 容量小,必须强制转换。
二、自动类型转换(隐式转换)
1.条件:小范围类型向大范围类型转换,程序自动完成,不需要手动写代码
2.发生场景
①赋值: int a = 10; long b = a;
②混合运算:多种类型一起运算,自动提升为容量更大的类型
3. 重点注意
byte 、 short 、 char 只要参与数学运算,会直接提升为int(4字节)
示例:
byte b1 = 3; byte b2 = 4; //byte b3 = b1 + b2; //编译报错,b1+b2运算后变成int类型
三、强制类型转换(显式转换)
1.条件:大范围类型转为小范围类型,需要手动强制转换
2.语法: (目标类型)变量
示例:
double num = 3.99; int i = (int) num; //i结果等于3,直接舍弃小数,不会四舍五入
3.存在风险
(1)浮点转整数:直接丢弃小数部分,精度丢失
(2)大数转小字节类型:数值溢出,数据失真
示例:
int a = 130; byte b = (byte)a; //结果不是130,发生溢出
四、复合赋值运算符的隐式强转(考试高频)
+= 、 -= 、 *= 这类复合运算符自带强制类型转换
示例:
short s = 2; s +=3; //等价 s=(short)(s+3),编译正常通过 //s = s +3; //报错,s+3运算提升为int,没有强转
五、字符串与基本类型转换
1.数字和字符串做 + 运算,结果为字符串
示例:
System.out.println(10 + "20"); //输出1020
System.out.println(10 + 20 + "30"); //输出3030
六、易错点总结
1.byte 、 short 、 char 一旦参与运算,就提升为int
2.强制转换只作用紧跟后面的变量,不是整个表达式
3.强制转换会造成精度丢失、数据溢出
4.复合赋值运算符自带强制转换,普通赋值不会自动强转
七、学习小结
类型转换是开发中经常遇到的基础问题。分清自动转换与强制转换,记住每种类型所占字节,注意运算提升、溢出、精度丢失等问题,可以规避大量编译错误和隐藏逻辑错误。

浙公网安备 33010602011771号