首先,第3个是错误的,因为对象没有初始化;
然后2,4效果是一样的,只不过4这种写法是不好的,list本来指向new出来的对象,然后又指向了modellist,相当于赋值两次:
ArrayList<String> list = null;
list=new ArrayList<String>();
list = modellist;
然后1跟2,4的区别在于,1 中list和modellist指向不同的对象,相互之间不影响,而2和4中list和modellist指向相同的对象,对其中一个进行增删改查会影响另一个。
2.3报空指针异常!区别就在于你添加时14不用再创建了,而 1 2 你添值的时候要先创建对象,再填值;
比如你在类中声明一个List list;生成getter, setter,在使用setList的时候,你传的是List;如果在类中声明了一个List<String> list = new
ArrayList<>();
那你使用set可以直接使用而不需要再创建对象;