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

为什么整数和整数可以互换使用?

淳于开畅
2023-03-14
问题内容

我对为什么Integer和int可以在Java中互换使用感到困惑,即使一个是原始类型,而另一个是对象也是如此?

例如:

Integer b = 42;
int a  = b;

要么

int d = 12;
Integer c = d;

问题答案:

发布的文章的前几句话很好地描述了它:

您不能将int(或其他原始值)放入集合中。集合只能容纳对象引用,因此您必须将原始值装箱到适当的包装器类中(在int情况下为Integer)。当您从集合中取出对象时,您将得到放入的Integer。如果需要一个int,则必须使用intValue方法将Integer拆箱。所有这些装箱和拆箱都很麻烦,并且会使您的代码混乱。自动装箱和拆箱功能可自动执行该过程,消除了痛苦和混乱。

基本上就是这样。它使您可以利用Collections Framework的原始函数,而不必自己进行工作。

主要缺点是,它会使新的html" target="_blank">程序员感到困惑,并且如果无法正确理解和正确使用它,可能会导致代码混乱/混乱。



 类似资料:
  • 问题内容: 我最近继承的应用程序关于构造函数的弃用警告已满: 有谁知道或可以指出为什么将诸如以下这样的简单内容替换为以下内容的原因: 现在,显然不赞成使用警告本身并不是问题,但是您是否可以想象,如果删除此构造函数,数以百万计的LOC会痛苦地哭泣吗? 在我对基准测试的简短介绍中,执行基准测试大约需要50%的时间。 问题答案: 本来打算包含有关日期的所有逻辑,但是API设计人员最终意识到,到目前为止,

  • 问题内容: 任何数据类型的上限(不包括)总是比下限的绝对值小1。 例如,an的上限为2,147,483,647,ABS(下限)= 2,147,483,648。 是否有理由总是总是比负整数多一个负整数? 编辑:更改,因为问题与数据库不直接相关 问题答案: 您提供的类型是有符号整数。让我们来看一个字节(8位)的示例。使用1字节,您可以使用组合来存储256个可能的数字。 现在,您要具有相同数量的正数和负

  • 问题内容: 我到处都读到过,当您在Java中定义介于-128到127之间的Integer时,它不会创建新对象,而是返回已经创建的对象。 除了让新手程序员比较Integer对象以查看它们是否具有相同的数字外,我看不到这样做的任何意义,但是我认为这很糟糕,因为确保他们认为可以将任何Integer对象与进行比较,并且还在教学在任何编程语言中都不好的做法:将两个“不同”对象的内容与进行比较。 这样做有其他

  • 除了让新手程序员将整数对象与进行比较,以确定它们是否是相同的数字之外,我认为这样做没有什么意义,但我认为这是不好的,因为他们肯定认为可以将任何整数与进行比较,而且在任何编程语言中都教给了一种不好的做法:用比较两个“不同”对象的内容。 为什么这样做还有其他原因吗?或者这只是在设计语言时的一个错误决定(在我看来),就像JavaScript中的可选分号一样? 编辑:我在这里看到他们解释了行为:为什么整数

  • 我正在覆盖两个int的简单容器对象的equals和hashcode方法。每个int反映另一个对象的索引(该对象是什么并不重要)。该类的目的是表示两个对象之间的连接。 连接的方向无关紧要,因此equals方法应该返回true,无论两个整数在对象中以何种方式循环。 这是我所拥有的(从整数的源代码修改): 但我的问题是:有没有更好的方法来实现这一点? 我主要担心的是hashcode()方法会为任何两个相

  • 问题内容: 我定义 当我尝试通过以下方式将其转换为数组时: 我得到这个异常: 为什么?它与Integer到Integer完全相同。当类是父子关系时,这不是一般情况 我尝试进行投射: 但是在这里我得到这个错误: 问题是什么? 问题答案: 由于类型擦除,ArrayList在运行时不知道其通用类型,因此它只能为您提供最通用的Object []。您需要使用另一个toArray方法,该方法允许您指定所需的数