很基础的问题

xujianhua815926 2006-04-03 02:32:36
大家好,我是菜鸟,想问一个基本问题:
private List list1=null;
private List list2=new ArrayList();
请问这list1和list2有什么区别??谢谢!
...全文
172 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkdong 2006-04-04
  • 打赏
  • 举报
回复
private List list1=null;
你只是声明了一个可以指向 LIST对象的变量~而现在这个变量是空的!

private List list2=new ArrayList();
你声明了一个可以指向LIST对象的变量--list2, 而现在这个变量指向了一个实例化的ArrayList()!

正如 cyfnjtu(迎风) 所说~
第一个不能调用List的任何操作,比如add()、get()什么的;
第二个可以直接使用,让你的list不断状大;
想喝咖啡的貓 2006-04-04
  • 打赏
  • 举报
回复
其实private List list1=null;和private List list2=new ArrayList();都可以说是初始化.
但null代表是不确定,你总不能调用一个不确定的对象的add()/get()吧.

wwwxuehu 2006-04-03
  • 打赏
  • 举报
回复
楼上几位都是从应用的角度去解决这个问题,从理论上讲,private List list1 = null;只是定义了一个List对象,并没有对其实例话,而private List list2 = new ArrayList();是对list2进行了实例话,最重要的是对其进行了内存空间分配。
xuelei81 2006-04-03
  • 打赏
  • 举报
回复
因为list1没有初始化,他指向一个null的地址,所以不能add()。会出现空指针错误
xujianhua815926 2006-04-03
  • 打赏
  • 举报
回复
package test;

import java.util.ArrayList;
import java.util.List;

public class Test {

private List list1 = null;

private List list2 = new ArrayList();

public List vo() {
list1.add(0, "hello");
list1.add(1, "world");
return list1;
}

public List po() {
list2.add(0, "hello");
list2.add(1, "world");
return list2;
}

public static void main(String[] args) {
// System.out.println(new Test().vo());
System.out.println(new Test().po());
}

}

把注释去掉就不可以运行,
Net8Java 2006-04-03
  • 打赏
  • 举报
回复
指向不同,一个是null,一个是个ArrayList的实例,null不能调用任何方法,否则有空指针异常
utwo81 2006-04-03
  • 打赏
  • 举报
回复
list1和list2都只是一个List类型的引用,本质上并没什么区别。
cuiyingfeng 2006-04-03
  • 打赏
  • 举报
回复
不同点
第一个不能调用List的任何操作,比如add()、get()什么的;
第二个可以直接使用,让你的list不断状大;
相同点
它们都可以指向一个新的List
sbnth 2006-04-03
  • 打赏
  • 举报
回复
如果我从数据库中取出的记录分别放在这两个list中,那会有什么区别呢
==》区别不大,只是用2跟占用资源,因为它要初始化list
xujianhua815926 2006-04-03
  • 打赏
  • 举报
回复
如果我从数据库中取出的记录分别放在这两个list中,那会有什么区别呢
想喝咖啡的貓 2006-04-03
  • 打赏
  • 举报
回复
大家好,我是菜鸟,想问一个基本问题:
private List list1=null;
private List list2=new ArrayList();
请问这list1和list2有什么区别??谢谢!
--------------------
private List list1=null;
意思是声明一个List对象,初始化为null

private List list2=new ArrayList();
声明一个List对象,初始化为一个List接口的实现类(多态)

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧