import java.util.ArrayList;
import java.util.List;
public class TestList {
private List<String> list;
private List<List<String>> mainList;
public TestList(){
list = new ArrayList<String>();
mainList = new ArrayList<List<String>>();
}
public static void main(String arg[]){
String[] mylist = {"sunday","monda","tuesday","wednesday","thurday","friday","saturday"}; TestList tl1 = new TestList(); for(String s : mylist)
tl1.list.add(s);//这里为什么可以这样写? list是私有变量 可以对象点么?不解
tl1.mainList.add(tl1.list);
//tl1.list.clear(); // here if clear then not getting the list
// tl1.list = null; ///// but here to assign null still getting list
tl1.list.clear();
System.out.println("after clear");
System.out.println("@@@@@@@@@======="+tl1.list);
for(List<String> list : tl1.mainList){
for(String s : list){
System.out.println("*********"+s);
}
}
}
}
=================================== clear 的时候结果为
after clear
@@@@@@@@@=======[]
===================================null 的时候结果为
after clear
@@@@@@@@@=======null
*********sunday
*********monda
*********tuesday
*********wednesday
*********thurday
*********friday
*********saturday
而=null则是释放掉list所占的内存空间
你注释中的问题:
list是私有变量没有错,但你没有注意你的main方法跟list是在同一个类吗?
私有变量在自己的类里是可以的
//tl1.list.clear(); // 内存中的东西被清除了
// tl1.list = null;//只是tl1.list不在指向任何对象,内存中的东西还在
谨慎考虑,回答错误,概不负责
list占用内存空间然后输出[]?
指向,那clear后指向是什么,null之后没有指向,可以这样问不
=null 是取消引用
我觉得clear是清楚内存(不是gc回收,里面没数据了也就不占内存空间了)而=null要等方法跑完gc才会回收这个list
不晓得对不对.
null后 --就没有指向了,等待 GC回收了