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

在Java中将数组分配给其他数组的问题

暨正真
2023-03-14
问题内容
public class TestingArray {

    public static void main(String[] args) {

        int iCheck = 10;
        int j = iCheck;
        j = 11;
        System.err.println("value of iCheck "+iCheck);

        int[] val1 = {1,2,9,4,5,6,7};
        int[] val2 = val1;
        val2[0] = 200;
        System.err.println("Array Value "+val1[0]);
    }
}

输出:

iCheck 10
阵列值200的值

从上面的代码中,我发现,如果将任何数组val2分配给另一个数组,val1并且更改了val2数组的任何值,则该结果也将反映在该数组中,val1而同一场景中没有使用变量赋值。为什么?


问题答案:

以下语句val2引用与以下相同的数组val1

int[] val2 = val1;

如果要复制,可以使用val1.clone()Arrays.copyOf()

int[] val2 = Arrays.copyOf(val1, val1.length);

对象(包括集合类,实例StringInteger等)以类似的方式工作,在分配一个变量到另一个简单的拷贝基准,使得两个变量指代相同的对象。如果所讨论的对象是可变的,则通过变量之一对其内容进行的后续修改也将通过另一个变量可见。

基本类型(intdouble等)的行为有所不同:不涉及任何引用,赋值构成该值的副本。



 类似资料:
  • 我有2个java数组 如果我按升序对int数组排序,它将是: 现在我想相应地对名称数组进行排序。输出应为: 我该如何维持一段关系?我见过这个链接(基于其他排序的数组排序数组),但它是针对js的

  • 问题内容: 这给出了预期的结果 这有效 但是如果我们将其更改为 我收到“ TypeError:无法将复数转换为浮点数”。 如果现在我们省略显式的,我将得到“ ValueError:设置具有序列的数组元素”。 有人可以解释发生了什么,以及如何做到无误吗?我迷路了。 问题答案: 要插入complex或in ,您显然需要将其视为数组,因此可以将其索引或分配给的一个切片: 看来NumPy无法正确处理这种情

  • 我在运行时通过“for循环”动态创建一个JTextFields数组。 我使用相同或等效的“for循环”将DocumentListener添加到每个文件中。在用户编辑这些JTextField的内容之后,应该执行的代码似乎是为每个JTextField/DocumentListener分别定义的。 问题:这不起作用,因为在用户操作之后执行的代码处于上一轮“for循环”结束时最后一次看到的状态。

  • 问题内容: 我以前从未做过,也找不到答案。这可能不是用于此目的的正确数据类型,但是我只想分配一个int,然后将另一个没有in循环的int分配到2D数组中,值实际上是从另一个函数返回的,但是为了简单起见,只是使用in i和k,这就是我以为您会这样做的方式,但事实并非如此: TIA-如果我误选了错误的树,请随时向我指出一个更好的数据结构的方向。 问题答案: 最好的方法可能是一次声明并分配所有值。如图所

  • 前言 数组的其他方法如下: 方法 描述 备注 indexOf(value) 从前往后索引,获取 value 在数组中的第一个下标 lastIndexOf(value) 从后往前索引,获取 value 在数组中的最后一个下标 find(function()) 找出第一个满足「指定条件返回true」的元素。 findIndex(function()) 找出第一个满足「指定条件返回true」的元素的in

  • 给定一个值数组,我如何将它分成由相等元素组成的? 给定这个数组 我想要这个输出 解决这一问题的一种可能方法是创建某种索引,以指示每个元素的出现情况。 最后使用索引重建输出数组。 但是,使用此解决方案,我会丢失原始值。当然,在这种情况下,这不是一个大问题(一个值仍然存在,即使重新创建,),但我想将此解决方案应用于像这样更复杂的数据结构 实际上,我正在寻找的函数是与相反的函数 我希望我已经说清楚了,如