让我改变我提问的方式。为了在类中构造对象,我们还可以使用其他一些变量。考虑这个例子:
public class Foo {
int X1;
int X2;
public Foo(int a) {
int[] array=new int[4];
// ...
}
}
如果我们创建这个类的2个对象,我们每个对象将有2个变量,并且整个内存将占用4个整数变量。我关心的是专用于构造函数中定义的整数数组的内存。创建多个对象时如何分配内存?
谢谢,
答案 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方法中的数组和类的构造函数中定义的数组指向相同的内存区域)