用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

请选择技术分类

 *如果你找不到更细的分类,可以选择上级分类
当前位置:云代码 - 技术问答 - Java

arraylist初始化不同有什么区别

 悬赏:30|提问者:默默|浏览:1974
举报|2016-11-04


1.
ArrayList<String>  list = new ArrayList<String>();
list.addAll(modellist);
2.
 ArrayList<String>  list = null;
list = modellist;

3.
 ArrayList<String>  list = null;
list.addAll(modellist);
4.
ArrayList<String>  list = new ArrayList<String>();
list = modellist;

问: 4种情况所获得的list有什么不同?为什么会出现这种情况?

我来回答

所有回答
举报|(0)|(0)2016-11-24
首先,第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指向相同的对象,对其中一个进行增删改查会影响另一个。
举报|(0)|(0)2017-03-20
2.3报空指针异常!区别就在于你添加时14不用再创建了,而 1 2 你添值的时候要先创建对象,再填值;
比如你在类中声明一个List list;生成getter, setter,在使用setList的时候,你传的是List;如果在类中声明了一个List<String> list = new 
ArrayList<>();
那你使用set可以直接使用而不需要再创建对象;
举报|(0)|(0)2017-04-18
??
举报|(0)|(0)2017-06-27
网上有很多这样的例子 参考一下就行
#5lbq
举报|(0)|(0)2017-09-13
bh
举报|(0)|(0)2018-02-08
??
举报|(0)|(0)2021-06-30
ear

相关提问