ArrayList的返回类型方法返回的是ArrayList变量的内存地址,并不是它的一个副本。这意味着当你通过返回一个ArrayList变量来访问该变量时,你实际上是在访问原始的ArrayList对象,而不是一个新的副本。
以下是一个示例代码,演示了ArrayList返回类型方法返回的是内存地址而非副本的情况:
import java.util.ArrayList;
public class ArrayListExample {
private ArrayList myList;
public ArrayListExample() {
myList = new ArrayList<>();
}
public ArrayList getList() {
return myList;
}
public void addToList(String item) {
myList.add(item);
}
public static void main(String[] args) {
ArrayListExample example = new ArrayListExample();
example.addToList("Item 1");
example.addToList("Item 2");
ArrayList list = example.getList();
list.add("Item 3");
System.out.println(example.getList()); // 输出结果为 [Item 1, Item 2, Item 3]
}
}
在上面的示例中,我们首先创建了一个ArrayListExample对象,并向它的ArrayList变量myList中添加了两个元素。然后,我们通过调用getList()方法,将返回的ArrayList对象赋值给list变量。接着,我们通过list变量添加了一个新的元素"Item 3"。最后,我们打印出原始的ArrayList对象,发现它已经包含了新添加的元素。
这证明了通过返回类型为ArrayList的方法返回的是原始ArrayList对象的内存地址,而不是一个副本。因此,对返回的ArrayList对象进行操作会直接影响到原始的ArrayList对象。