Java类型转换体现强类型约束,分自动(小转大)、强制(大转小)、字符串互转、引用类型转换四类,各自遵循安全规则与显式要求。

Java 类型转换不是语法糖,而是强类型语言的底层约束体现。它直接关系到数据安全、运算结果和程序健壮性。掌握核心规则比死记硬背更重要。
自动类型转换:小转大,安全无感
当小范围类型赋值或参与运算时,Java 会自动提升为更大范围的类型,无需括号,也不会报错。
- 典型路径:byte → short → int → long → float → double;char → int → long → float → double
- 表达式中所有操作数统一提升为“最高级别”类型——比如 int + long + float,整个运算按 float 进行
- 方法调用时也适用:参数是 short,但方法接收 int,自动转换成功
- 注意 float 虽然只占 4 字节,却能表示 long 的整数值(可能丢失精度),所以 long → float 属于自动转换
强制类型转换:大转小,需显式声明
把高精度或大范围类型转为低精度或小范围类型,必须加括号指定目标类型,且编译器不保证结果合理。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 语法:int i = (int) 3.9; → 结果是 3(截断,非四舍五入)
- byte b = (byte) 200; → 结果是 -56(超出 -128~127 范围,发生溢出)
- char c = (char) 65; → 得到 'A';但反过来 int i = 'A'; 是自动的
- boolean 和其他任何类型之间禁止任何形式的转换,连强制也不行
字符串与数字互转:脱离基本类型体系
String 不是基本类型,和 int/double 等互转属于“逻辑转换”,需调用包装类方法,且可能抛异常。
立即学习“Java免费学习笔记(深入)”;
- 基本类型 → 字符串:三种常用方式
String.valueOf(123)、Integer.toString(123)、"" + 123 - 字符串 → 基本类型:Integer.parseInt("123")、Double.parseDouble("3.14")
若字符串格式非法(如 "abc"),会抛 NumberFormatException,务必 try-catch
引用类型转换:向上安全,向下谨慎
对象之间的类型转换依赖继承/实现关系,不是靠字节大小,而是靠类型兼容性。
-
向上转型(Upcasting):子类对象赋给父类引用,自动完成,安全
Animal a = new Dog(); ✅ -
向下转型(Downcasting):父类引用转回子类,必须强制,且运行时可能失败
Dog d = (Dog) a; → 若 a 实际不是 Dog,抛 ClassCastException - 推荐先用 instanceof 检查:if (a instanceof Dog) { Dog d = (Dog) a; }


















