java中的数字在没有子类的情况下如何工作?

ahm*_*tab 5 java abstract-class numbers

我想知道为什么这段代码的结果:

Number x = 3;
System.out.println(x.intValue());
System.out.println(x.doubleValue());
Run Code Online (Sandbox Code Playgroud)

产生

3
3.0

因为 Number 是Java 中的一个抽象类。

所以当我需要使用它时 - 我可以将它与一些它的子类一起使用,比如 Integer、Double ...等。现在我想知道这部分代码究竟是如何工作的:

Number x = 3;
Run Code Online (Sandbox Code Playgroud)

Sur*_*tta 4

自动拳击。

所以当你这样做时

Number x = 3;
Run Code Online (Sandbox Code Playgroud)

被编译为

Number x = new Integer(3);
Run Code Online (Sandbox Code Playgroud)

java中的Number在没有子类的情况下如何工作?

这是一个错误的假设。数字类有子类。如果你看一下 Integer 类的定义。

查看Integer类的定义

public final class Integer
extends Number
Run Code Online (Sandbox Code Playgroud)

它是 Number 的子类,因此可以很好地编译。