2012-02-23 40 views
-1

在File1.java我File2.java有─如何从File1.java数组复制到文件two.java

public static int[] dataArray = new int[100]; 

我访问它 -

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; 

要复制吗?任何帮助赞赏。谢谢!

回答

1

是的,你可以做

private static int[] data = File1.dataArray; 

但有一个巨大的危险做这样的说法,所以我不会把它来复制阵列以正确的方式,因为你并没有真正复制。

请参阅此代码。它演示了会发生什么。

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]; 
} 
    } 
+0

非常感谢你为说明!这几乎是我正在寻找的答案。 :) – Prince 2012-02-24 07:18:49

0

查阅System.arraycopy()复制数组。

目前还不清楚你的标题中提到的代码与文件引用的内容有什么关系?

此外,您提供的代码不完整,不会编译,并且不清楚或惯用的Java。

如果你不清楚你想要做什么,这很可能会被关闭。

+0

我不好,无论是阵列存在于他们的名字不同的Java文件File1.java和File2.java – Prince 2012-02-23 02:39:49