集合中null和size==0的区别

来源:互联网 发布:php倒计时提示 编辑:程序博客网 时间:2024/06/06 05:19

相信对于不了解Java引用的初学者来说,有时会不明白集合中list==null和list.size()==0的区别。这里就以基于数组的arrayList进行讲解。

List<T> list=new ArrayList<T>();

这句话的意思是创建一个容器,但是并没有往容器内部存放东西,这时候list就不为null,但是size为0。

当这句话改为List<T> list时,这句话的 意思是list==null;


接下来用专业的术语来进行讲解:List<T> list=new ArrayList<T>();

创建一个在jvm堆中的对象,接着在虚拟机栈中创建list引用变量,指向堆中的list对象。

当往list中add T对象时,其实存放的是T对象的地址,在这时候list的size就不为0了。

这里关于引用和Java内存区域,可以参考深入理解Java虚拟机第二版,这本书能够让你了解到Java中“一次编写,到处运行”的原理,可以说和think in java一样是Java程序员必读之一

原创粉丝点击