2012-12-08 135 views
0

的数组变量可以说我有如下的类:访问另一个类

public class class1{ 

    private int[] array1; 

    public class1(){ 
     array1 = new int[10]; 
     } 

    public int[] getArray(){ 
     return array1; 
     } 
} 

如果我在另一个类中或在主创建该类的一个实例,并使用的getArray()方法到阵列分配到上层类中的另一个变量,然后在那里修改数组的值,第一个类中的原始数组值是否也会被修改?

+4

你为什么不亲自尝试一下? –

+0

试试看..:/然后你会学到...... –

+0

是的,你们是对的。我很想完成我的项目,我忘了我总是可以创建一个简单的测试课程。谢谢。 – user1887413

回答

2

第一个类中的原始数组值还会被修改吗?

是的,它会被修改,因为你在调用者中得到的不是数组本身的副本,而是你获得了对原始数组对象的引用副本。

而且,如果您使用任何引用修改数组,则所有引用指向该数组的引用都会反映该更改。

+0

感谢您的回复。在仔细研究一下代码后,我意识到如果原始变量是一个整型变量,它不会以相同的方式工作。从您的解释中,我了解到,传递参考和值之间是有区别的。有没有办法将第一个类的整数变量的引用传递给调用类,而不是用传统的setter和getter方法修改它? – user1887413

+0

@ user1887413。那么,在Java中,所有东西都是按价值传递的。所以,如果你传递一个整数,它的值将被复制到callie中。因此,所做的更改不会反映在调用者中。现在,您可能会认为您可以使用'Integer'引用而不是原始int,但在这种情况下,由于'Integer'是不可变的,所以任何修改都会创建另一个'Integer'对象,从而使原始对象保持不变。所以,不,你不能那样做。你将不得不使用'setters'来修改它们的值。 –

0

是的,原来的数组值也会被修改。

正如您从方法返回数组的引用。引用只不过是指向对象地址的指针。当你从方法中返回时,它被分配给另一个参考。如果您使用该引用修改任何内容,则基本上会修改相同的数组,即原始数组。