【问题标题】:Is an Object added to a List in Java modifiable?Java中添加到列表中的对象是否可以修改?
【发布时间】:2021-10-31 13:31:03
【问题描述】:

我无法理解如何将对象添加到列表中。

这是一个将 int[] 添加到 List 的代码示例 -

    List<int[]> list = new ArrayList<>();
    int[] element = {2,3};
    list.add(element);
    System.out.println(list);   //[[2,3]]
    element[1] = 45;
    System.out.println(list);   //[[2,45]]

我不确定对象是如何添加到列表中的。是否添加了对象的副本? 我试图找出它是否适用于原语,所以这是一个代码示例 -

    List<Integer> list = new ArrayList<>();
    int obj = 25;
    list.add(obj);
    System.out.println(list);   //[25]
    obj=56;
    System.out.println(list);   //still [25]

Oracle 上的 add function 文档没有提到对象是如何添加的,只是说它是一个布尔函数,除非另有说明,否则在末尾添加元素。 我知道 Java 是通过引用对象来工作的,但是对于这个问题,它到底是什么意思呢?

如果您能帮助我理解这一点,我们将不胜感激,提前谢谢您

【问题讨论】:

  • 这与添加到列表无关。 Integers总是不可修改,数组总是可修改。 obj=56; 没有修改对象。它只是将变量 obj 重新分配给 56。
  • @Abra 我确实解决了这个问题,但我不知道整数是不可修改的,而数组是。
  • 谢谢@Sweeper,你的解释消除了我的一些误解

标签: java arrays arraylist


【解决方案1】:

所有原始包装类(Integer、Byte、Long、Float、Double、Character、Boolean 和 Short)在 Java 中都是不可变的,因此加法和减法等操作会创建一个新对象,而不是修改旧对象。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多