假设我有一堂课:

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>();对其进行任何操作之前对其进行初始化。

10-01 15:01