假设我有一堂课:
class Dummy{
public static ArrayList<String> varArray;
}
在另一堂课中,我这样做:
Class Dummy2{
void main()
{
ArrayList<String> temp = Dummy.varArray;
}
}
现在假设在
Dummy2
中将元素添加到temp
。更改会反映在Dummy.varArray
中吗?因为这就是我程序中正在发生的事情。我尝试打印两个的地址,它们都指向相同的地址。不知道static
字段是这样工作的。还是我做错了什么? 最佳答案
它不是关于静态的。语句ArrayList<String> temp = Dummy.varArray;
表示两个变量都引用同一数组列表。由于varArray
是静态的,因此只有一个副本。
您可以将ArrayList<String> temp = Dummy.varArray;
读为,变量temp现在引用由Dummy.varArray引用的ArrayList对象。
顺便说一句,您需要在使用public static ArrayList<String> varArray = new ArrayList<String>();
对其进行任何操作之前对其进行初始化。