最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java 学习笔记:类型转换全面解析
时间:2026-06-19 08:31:58 编辑:袖梨 来源:一聚教程网
Java类型转换是强类型语言的底层机制,影响运算结果、内存行为和健壮性;自动转换安全但遵循隐式提升规则,强制转换需警惕精度丢失与溢出,字符串与数值互转依赖工具方法,包装类装箱拆箱存在缓存与空指针风险。
Java 类型转换不是语法糖,而是强类型语言的底层机制。它直接影响运算结果、内存行为和程序健壮性,必须理解其规则而非死记硬背。
自动转换:安全但有隐含提升规则
小范围类型赋值给大范围类型时,编译器自动完成,不丢失数据。但要注意实际执行逻辑:
- byte、short、char 在参与算术运算时,一律先提升为 int,再按表达式中最高类型继续提升
- 例如
byte a = 10; byte b = 20; int c = a + b;中,a 和 b 并非直接相加,而是各自转成 int 后计算 - char 转 int 是按 Unicode 码点进行的,
'A'自动变成65,不是字符拼接 - 浮点字面量默认是 double,整数字面量默认是 int;赋值时若目标类型更宽(如 long、double),自动转换成立
强制转换:可控但需警惕精度与溢出
显式用 (目标类型) 进行转换,适用于大→小或不兼容类型间操作,但伴随风险:
- 浮点转整数直接截断小数部分,
(int)9.99得到9,不是四舍五入 - 整数范围缩小时可能溢出,
int x = 300; byte y = (byte)x;结果是44(因 300 对 256 取模) - 不能对 boolean 强转,也不能在无继承关系的类之间强制转型
- 向下转型(如 Object → String)前建议用
instanceof检查,避免 ClassCastException
字符串与数值互转:脱离基本类型范畴
String 不属于基本类型,与数值转换需调用工具方法,且全程不自动:
立即学习“Java免费学习笔记(深入)”;
- 数值 → 字符串:推荐
String.valueOf(x),支持所有基本类型和 null;也可用包装类的toString(),但 null 会空指针 - 字符串 → 数值:用对应包装类的
parseXxx()方法,如Integer.parseInt("123");若字符串格式非法,抛 NumberFormatException - 空或空白字符串转数值前务必判空,
StringUtils.isBlank(str)是常用防护手段
包装类与基本类型:装箱拆箱简化但暗藏坑
Java 5 起支持自动装箱/拆箱,让 Integer 等可像 int 一样使用,但需注意:
- 赋值时自动发生:
Integer i = 100;是装箱,int j = i;是拆箱 - 仅限 -128 到 127 的 Integer 值被缓存,超出此范围的相同数值对象 == 比较结果为 false
- 拆箱遇到 null 会触发 NullPointerException,如
Integer x = null; int y = x; - 循环中频繁装箱(如
for(Integer i=0; i)可能引发性能与内存问题
相关文章
- 刀剑缭乱2026公测兑换码大全一览 07-05
- 崩坏星穹铁道4.0卡池7个新角色一览 07-05
- 明日方舟终末地开服工业蓝图一览 工业蓝图作用与使用思路解析 07-05
- 原神梦之树怎么开启 梦之树开启条件 07-05
- 帕瓦勇者传说持续伤害阵容搭配推荐 07-05
- 明日方舟:终末地全新玩法 蚀像寻遗怎么玩介绍 07-05