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

标签 java primitive-types

我正在复习 Java 角色的原始类型面试问题。我在测试中被问到这样的陈述。

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

最佳答案

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

关于原始类型,答案是肯定的,也不是。当您编写它们时,基本类型不会继承自 java.lang.Object。但是,当将 java 代码编译为 java 字节码时,编译器会执行称为 autoboxing 的操作。 .

简而言之,在编译时,编译器将所有原始值转换为它们的包装类(Integer 用于 int,Boolean 用于 boolean,等等)。但是,他这样做效率很高,因为它将 int i = 0; 转换为 Integer i = Integer.valueOf(0);。在幕后,包装器类型的 valueOf 函数是享元工厂,即最多有一个 Integer 0 实例,一个 Integer 1 实例,等等...

因此,在编码时您使用原始类型,但 JVM 使用原始类型的包装器,它实现了 java.lang.Object

关于java - 原始类型只是不从 java.lang.Object 继承的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376821/

相关文章:

java - 如何在 Intellij Idea (2017) 中打开 Collection 夹中选定的文件(所有文件)

java - 在 selenium 自动化期间绕过 "External protocol request"弹出窗口

java - 我的随机游荡算法有什么问题?

objective-c - Objective-C 中的术语 "scalar"和 "primitive"之间有区别吗?

java - "Narrowing a primitive truncates the high order bits"这是什么意思

c++ - 为什么 C++ 中未初始化(然后使用)的 int 不返回错误?

java多线程访问原始变量

java - 获取绝对 java.nio.Path

java - 春分应用程序 : log4j broken eclipse console output

c# - 盒装原始值的动态比较