在File1.java中我有 -
public static int[] dataArray = new int[100];
File2.java中的我将其作为 -
访问它private static int[] data = new int[File1.dataArray.length];
for(int i=0; i<File1.dataArray.length; i++) {
if(File1.array1[i] == 0)
continue;
data[i] = File1.array1[i];}
这是正确的方法还是我可以这样做 -
private static int[] data = File1.dataArray;
要复制吗?任何帮助赞赏。谢谢!
答案 0 :(得分:1)
是的,你可以做到
private static int[] data = File1.dataArray;
但是有一个巨大的危险这样做,因此我不会称它为COPY阵列的正确方法,因为你并不真正复制。
请参阅此代码。它演示了会发生什么。
public class File1
{
public static int[] dataArray = new int[100];
static
{
for (int i=0; i<100; i++)
{
dataArray[i] = i;
}
}
}
public class File2
{
private static int[] data = File1.dataArray; // makes "data" refer to the SAME array as File1.dataArray
public static void main(String[] args)
{
File2 file2 = new File2();
file2.data[20] = -567; // this changes File1.dataArray also!
System.out.println(File1.dataArray[20]); // prints -567
}
}
因此,正如Jarrod建议的那样,使用System.arrayCopy()来复制数组。当然,您也可以通过编写自己的代码进行复制 -
private static int[] data = new int[File1.dataArray.length];
static
{
for(int i = 0; i < File1.dataArray.length; i++)
{
data[i] = File1.dataArray[i];
}
}
答案 1 :(得分:0)
查找System.arraycopy()以复制数组。
目前尚不清楚所呈现的代码与标题中引用的文件有什么关系?
此外,您呈现的代码不完整,无法编译,也不清晰或惯用Java。
如果你不清楚你想要做什么,这很可能会被关闭。