在另一个类中使用现有数组

时间:2015-02-26 21:50:10

标签: java pass-by-reference

让我改变我提问的方式。为了在类中构造对象,我们还可以使用其他一些变量。考虑这个例子:

public class Foo {
    int X1;
    int X2;
    public Foo(int a) {
        int[] array=new int[4];
        // ...
    }
}

如果我们创建这个类的2个对象,我们每个对象将有2个变量,并且整个内存将占用4个整数变量。我关心的是专用于构造函数中定义的整数数组的内存。创建多个对象时如何分配内存?

谢谢,

2 个答案:

答案 0 :(得分:0)

回答你的第一个问题,是的。如果在一个类的main方法中创建一个数组,那么在另一个类的构造函数中再创建相同的数组 ,那么该内存中将有两个该数组的副本。更重要的是,如果您以后修改了一个副本,则不会修改另一个副本。

解决问题的最佳方法是将数组作为参数传递给构造函数。然后,您将能够访问(甚至修改)原始数组的元素。例如:

public class Driver{
    public static void Main(String[] args){
        int[] array = {1, 2, 3};
        CustomObject otherObject = new CustomObject(array);
    }
}

//And, in a different file....
public class CustomObject{
    public CustomObject(int[] array){
        int x = array[0];
        //etc..
    }
}

答案 1 :(得分:-1)

如果你有两个对同一个对象的引用,那么就不会有任何无用的内存使用。 为了更好地理解其工作原理,请查看difference between stack and heap memory in Java

(基本上,main方法中的数组和类的构造函数中定义的数组指向相同的内存区域)