当前位置: 首页 > 知识库问答 >
问题:

将整数添加到ArrayList时

漆雕嘉平
2023-03-14

我有一个很愚蠢的问题。当我们向ArrayList添加一个int值时,它会创建该int值的新整数对象吗?例如:

int a = 1;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(a);

在上面的代码中,“a”是一个值为1的原始类型,“list”是一个包含整数类型元素的数组列表。那么在“列表”中添加“a”时,“列表”如何将“a”视为整数?

共有3个答案

吕华彩
2023-03-14

在里面

int a = 1;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(a);

最后一行由编译器自动转换为:

list.add(Integer.valueOf(a));

Integer.valueOf是一种方法,它要么创建一个具有相同值的新整数对象,要么重用一个已经存在的对象。结果对象与变量a没有关系,除了它代表相同的值。

解修然
2023-03-14

是否创建新的整数对象取决于添加int时的值。JVM有一个覆盖一系列公共值的预制对象缓存,如果值在该范围内,它将使用现有的缓存对象而不是创建一个新对象。

对于int类型,Java语言规范要求该缓存覆盖从-128到127(包括-128和127)的所有数字。JVM实现可以选择是否在此缓存中包含其他值。

班高明
2023-03-14

a被自动装箱到整数。从链接中,

自动装箱是Java编译器在原语类型及其相应的对象包装类之间进行的自动转换。

 类似资料:
  • 问题内容: 我有一个ArrayList,它向其中动态添加了一些对象,并且有一个JButton。运行我的程序时ArrayList为空,并且JButton设置为setEnabled(false)。我想在ArrayList中有2个或更多元素时启用我的按钮,如果ArrayList有一项或为空则再次禁用它。我该如何实现? 问题答案: 没有任何种类的通知机制。 我建议您编写自己的实现,该实现将委托给私有的实现

  • 但是,后来当我试图将整数添加到正确的“内部”数组列表中时,我无法将整数添加到ArrayList类型的位置中。我还得到一个索引超出界限的错误。 解决这个问题的方法是将整数强制转换为ArrayList类型,但这意味着我将在内部数组列表中添加一个数组列表,这不是我想要的。我想在正确的“内部”ArrayList中添加一个int。

  • 问题内容: 是否可以将值添加到ArrayList而不是使用HashMap 就像是: 现在收到错误: 谢谢 问题答案: JSTL并非旨在执行此类操作。这确实属于业务逻辑,该业务逻辑将(间接)由Servlet类控制。 创建一个如下的servlet: 这个地图上的。 现在,在其中创建一个JSP文件(将其放置以防止直接访问): 不需要,因为servlet已经设置了它。 现在通过调用servlet + JS

  • 我的任务是实现一个蛮力算法来输出一些n的整数[1,2,…, n]的所有排列。但是,我似乎在将ArrayList对象添加到HashSet时遇到了一些问题: 我发现对“nextPer的连续调用确实找到了所有排列,但是我不明白当我将排列添加到HashSet“allPer的排列”时会发生什么。我在n=3的情况下运行时得到的输出是这样的: [[3, 2, 1, 1, 2, 1, 1, 3, 1, 2], [

  • 问题内容: 我有以下Java代码,其中我试图将ArrayList复制到另一个ArrayList。 我希望“列表”数组采用以下格式: 但是从上面的代码中,“ list”数组输出看起来像这样: 我想您可能已经注意到了差异。我无法达到预期格式的结果。请建议我任何解决方案!提前致谢!! 问题答案: 然后,你需要的: 请注意,已更改为。在Java命名约定中,变量以小写字母开头。类以大写字母开头。

  • 在android studio中,我试图放入一个整数的ArrayList中,其中包含标签id如下所示