gpt4 book ai didi

java - 直接子数组复制到二维数组和在java中使用for循环之间有功能区别吗

转载 作者:行者123 更新时间:2023-12-01 19:58:00 25 4
gpt4 key购买 nike

我编写了两段代码来复制二维数组的子数组元素,如下所示

第一种方法:

 String [][] actual = new String[5][5];
String [] arrayToCopy = {"1","2","3","4","5"};
actual[0] = arrayToCopy;

第二种方法:

String [][] actual = new String[5][5];
String [] arrayToCopy = {"1","2","3","4","5"};
for(int i=0;i<5;i++)
actual[0][i] = arrayToCopy[i];

上述两种方法在功能上有什么区别,因为当我打印二维数组时它们生成相同的输出?

最佳答案

您需要担心的一个区别是,当您说

actual[0] = arrayToCopy;

您实际上并没有“复制”您的数组。相反,您将替换 actual[0] 并引用arrayToCopy。如果您更改任一变量的数组,则更改将反射(reflect)在另一个变量中。你可以自己看看:

System.out.println(actual[0][0]);   // prints "1"
arrayToCopy[0] = "5";
System.out.println(actual[0][0]); // prints "5"

在第二种方法中,actual[0]arrayToCopy 引用不同的数组,并且您实际上是将元素从一个数组“复制”到另一个数组。改变其中之一,不会改变另一个。

至于你的问题,它在“功能”上有什么不同吗?取决于你的意思,但如果数据是只读的,那么这没什么大不了的。只有当您可以修改数据并且您不小心并开始更改不应该更改的内容时,它才会成为问题。

关于java - 直接子数组复制到二维数组和在java中使用for循环之间有功能区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48817965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com