List list ; list= new ArrayList();

2024-12-25 11:25:51
推荐回答(6个)
回答1:

List list是声明(定义)一个List类型的变量,list= new ArrayList()是创建一个ArrayList对象(分配内存空间),
关于开辟内存空间的问题你可以这样理解,list是变量名,是对象的引用(就是指针,指向对象所在的地址,虽然java里没有了指针),它是放在栈内存的,而实际的ArrayList对象是放在堆内存的。
所以List list;是在栈里分配空间给list, list= new ArrayList();是在堆分配空间给 ArrayList对象,并将对象的地址给list list无需提前知道是ArrayList还是LinkedList,这是多态,LinkedList和ArrayList是List的子类,父类指针指向子类对象

回答2:

你看看父类,子类关系,接口的实现类也相当与特殊继承的关系,上面语法定义不报错是因为他们的关系,具(体对象!!!)赋值可以参考下面吧;
List list是声明了一个变量,没有指向一个具体值,如public List getResult(){
List list;
return list;//这句话会报错的,你的list没有指向一个任何内存地址,如果用null指向了一个空是可以
//被返回的,list相当与开辟了一块类似索引的空间,= new ArrayList();=右边是将一块空
//闲的内存使用,存放你new出来的对象,=则是将这块内存地址赋值给变量的索引具值
//及list存的是new ArrayList()的内存地址,list =new LinkedList(),相当于创建了另外一个
//对象和新的内存空间,list被重新赋值新的内存地址
}
对象内存销毁我还没具体明白,书上讲的太泛了,java垃圾回收机制基本自己解决了

回答3:

List list;这一行做了什么?
第:只是定义了一种类型,相当于你定义一个人,到底是男人还是女人,还没有确定。

在内存中为list开辟空间了吗?
第:还没有new,所以只是一个引用,还没有真正的开辟空间来存放。

海枫科技

回答4:

List list 这一句在内存开辟了一个变量,这个变量是用来放地址的,大小是4个字节32bit,目前的地址里面是空的,下一句
list = new Arraylist();
完成了两件事,
一、申请一块默认最小的空间存放list中的数据,好像是8个List单元吧,大小是8*4字节,具体记不清了,可以在DEBUG上看,
二、把这块空间的地址赋值到list变量,也就是把这块空间的首地址,也就是第一个List单元的地址,填写到list变量地址空间

回答5:

没什么不同,主要第一个是向上转型,因为arraylist实现了list接口,所以可以写成第一种形式,这样做的好处就是方便重构,加入你所用的集合不是arraylist而是linkedlist,只需把list
list
=
new
linkedlist();而其他都不需要变

回答6:

是不是JAVA哦?如果是的话应该是List
list
=
new
ArrayList
();大小写严格区分的。ArrayList是实现了List接口的一个类,用接口来
实例化
对象,那么对象只能调用从接口里面的方法。