原始类型只是不从java.lang.Object继承的类型吗?

时间:2016-05-22 16:31:45

标签: java primitive-types

我正在审查java角色的原始类型面试问题。我在测试期间被问到这样的陈述。

原始类型是不从java.lang.Object继承的任何类型。

2 个答案:

答案 0 :(得分:2)

还有其他类型不扩展java.lang.Object。例如,null是一个值,因此它不会扩展它。虽然抽象类没有扩展,但接口也没有扩展它。

关于原始类型,答案是肯定而不是。当你编写它们时,原始类型不会从java.lang.Object继承。但是,在将java代码编译为java字节码时,编译器会执行名为autoboxing的内容。

简而言之,在编译时,编译器将所有原始值转换为它们的包装类(对于int为Integer,对于boolean为Boolean等)。但是,他有效地做到了这一点,因为它将int i = 0;转换为Integer i = Integer.valueOf(0);。在幕后,包装类型的valueOf函数是一个Flyweight Factory,它最多只有一个Integer 0的实例,一个整数1等...

因此,编码时使用基本类型,但JVM使用基本类型的包装器,它实现java.lang.Object

答案 1 :(得分:1)

不,他们不是。接口也不会继承自java.lang.Object