List<Long> insertLabelIds = null;
List<Long> insertLabelIds = new ArrayList();
以上代码, 都是为了初始化一个对象,之后赋值,都是可行的。
但是我感觉这个东西还是有区别的,希望同僚可以从JVM的角度、以及代码层面解答一下 这两种初始化的优劣。
哪种更好,或者每一个使用的场景。
个人的理解:
当给这个对象申明为null的时候,List insertLabelIds = null;
JVM会去寻找内存空间中的这个对象 并赋值为null,然后会有一个引用指向这个对象,但是如果没有内存空间中没有这个对象呢?
还有寻找这个对象的引用的这个过程 算是寻址吗?
List insertLabelIds = new ArrayList();
这一种 JVM是通过new关键字进行空间开辟的,所以这个初始化会有一定的性能问题,毕竟一旦开辟空间了 就会有寻址 开辟空间 过程长。
所以 我认为两者都有寻址的动作 只不过是这个对象创建的时机不同
一个是提前声明 赋值 另外一个申明 引用。