Java中Number类代码解析:Number x = 3; 的赋值与自动装箱疑问
Number x = 3; 是否发生自动装箱?赋值过程详解
这行代码确实发生了自动装箱(autoboxing),具体赋值过程拆解如下:
- 首先,
3是Java基本类型int,而变量x的类型是抽象类Number——基本类型无法直接赋值给引用类型,此时Java的自动装箱机制会触发。 - 编译器会自动把基本类型
int的3转换为对应的包装类Integer的实例,等价于手动编写:Number x = Integer.valueOf(3);。 - 由于
Integer是Number的子类,根据Java多态规则,Integer实例可以赋值给Number类型的引用,这是合法的向上转型。
结合代码输出补充说明:
- 调用
x.intValue()时,实际执行的是Integer类重写的intValue()方法,直接返回封装的int值3; - 调用
x.doubleValue()时,Integer类的该方法会将内部的int值转换为double类型返回,因此输出3.0。
内容的提问来源于stack exchange,提问作者Sarah_Sameh
相关产品推荐
相关产品推荐

