java - 为什么 Java 中出现了包装类概念?

标签 java core

我知道什么是包装类,它们将原始类型(例如 int、double 等)包装到各自类的对象。

但我想知道一个可以实际解释我的 Java 代码示例。

使用包装类和不使用包装类都会做什么。

最佳答案

当 Java 语言被“发明”时,人们认为使用基本类型 int、long、... 可以避免性能问题。 15 多年前,还没有高效的 JIT 编译器;因此,如果您必须为 10000 个整数创建一个数组……或为 10000 个 Integer 对象创建一个数组,则会产生巨大的差异。

另一方面,Java 希望成为一种面向对象的语言。因此,这些原始类型附带了相应的类。从某种意义上说,你是正确的:如果没有原始 tpyes,只有 Integer、Long 等,Java 类型系统会更加一致、简单得多......但早在 1997 年,这个简单的类型系统就会在性能方面一直“昂贵”。不幸的是,人们并没有考虑在字节码中允许原始类型……但在 Java 语言本身中却没有考虑到它们(以及编译器在内部将 Integer 转换为 int)。

现在的主要用途是 Java 编译器进行自动装箱(原始类型和“基于对象”类型之间的自动转换);所以你可以写这样的东西:

Map<Integer, String> someMap = ...
someMap.put(5, "string")

关于java - 为什么 Java 中出现了包装类概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230425/

相关文章:

java - 计算数组内的出现次数

java - 如何停止 BufferedReader readline()?

java - Android 调用带有 onClick 错误的 fragment 方法

java - 如何在运行时获取自定义功能的版本?

java - 序列化对象时是否需要处置它?

java - 为什么我可以访问另一个包的其他子类中的 finalize() 方法?

java - 如何知道所需的核心数和内存数?

java - Object类如何实现clone()方法

c++ - 打印以记录核心转储文件堆栈,Windows 上的 C++?

java - 如何比较两个包含具有共享属性的对象的数组列表