当前位置: 首页 > 面试题库 >

当我们有包装器类时,为什么要支持原语?

百里成仁
2023-03-14
问题内容

我们在Java中有包装器类,例如Interger,Float ..为什么它仍然仍然支持原语,这使Java成为完全面向对象的语言?


问题答案:

包装器是对象,被放置在堆中。基元只是“值”,并进入堆栈。这是更有效的,因为对于堆中的已包装基元,您(至少)需要值(位于堆栈中) 对包装器对象的引用。

这种性能提升是否重要根本取决于您在做什么。当然,对于繁重的数字工作而言,但对于其中99%的工作而言,这是一件令人烦恼的事情。一方面,无论如何您都无法将基本体存储在Collection中;他们会自动装箱。因此,存储大量数组的唯一方法是使用纯数组,这又会导致其他类型的效率低下(例如,如果需要调整它们的大小)。



 类似资料:
  • 然后用Gson lib将响应转换为我们需要的对象。 这来自Square/OKHTTP文档: 它的请求/响应API是用流畅的构建器和不变性设计的。它同时支持同步阻塞调用和带有回调的异步调用

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如

  • 问题内容: 如果我用Java创建一个类,就会一直被告知惯例是将类的所有字段都设为私有。如果需要访问或更改它们,可以创建访问器和更改器方法。我确实了解私有变量的重要性,因为它们有助于降低复杂性并允许封装。 我不明白的是,如果我创建一个公共的accesor和mutator方法,那么变量不是公共的吗?在任何人都可以访问私有变量的情况下,为什么仍然习惯使用私有变量? 我还应该指出,我了解这些方法的重要性,

  • 问题内容: 我从Angular 2.0开始了一个教程,设置工作区的第一步是安装Node.js和NPM。 为什么我们要为Angular 2.0安装Node.js? 我不记得要对有角度的1.X这样做。 问题答案: 从技术上讲 ,不需要Angular2即可使用Node.js和NPM。它确实使事情变得轻松。这是我推测此选择背后的主要原因: CLI :一段时间以来,构建和开发新的Angular应用程序的实际

  • 问题内容: 我知道包装器类是什么,它们将原始类型(例如int,double等)包装到各自类的对象中。 但是,为什么我们首先需要包装器类?为什么不简单地在我们拥有原始类型的地方使用它们呢? 问题答案: 几种可能的原因: 这样就可以有一个空值 包含在集合中 将一般/多态与其他对象一起视为对象

  • 为什么Java中的泛型可以处理类而不能处理基元类型? 例如,这个操作很好: 但这是不允许的: