黑马程序员技术交流社区

标题: 请问一下,这两种写法有什么不一样? [打印本页]

作者: 逸俊逍全    时间: 2013-12-20 23:58
标题: 请问一下,这两种写法有什么不一样?
public List 方法名(){
List list=new List();
list=xx.xx();
return list;
}

public List 方法名(){
List list=null;
list=xx.xx();
return list;
}
这两种写法有什么不一样?!


作者: 黄伟财    时间: 2013-12-21 00:11
总的来说,上面的实例化了类,就是给类分配了内存空间,下面的没什么都没干,只是初始化了list,并没有分配内存
作者: 冷锋也温柔    时间: 2013-12-22 20:05
List list=new List();  只是创建了一个list的对象,并没有对其进行赋值

List list=null;创建了一个list对象,并对其进行一个空赋值

list=xx.xx(); 这个代表的是把某某对象的某某方法的返回值赋值给list


作者: 恩恩    时间: 2013-12-22 23:46
第一个代码块,你给list开辟了一个对象空间,也就是说他已经占了一定的内存空间,但是第二个代码里面,你并没有给他开辟一个内从空间。
后面他们都被赋值了,list=xx.xx() ;内容可能一样,但是他们在内存空间的地址肯定不一样。
作者: smileven    时间: 2013-12-23 02:46
第一个操作为list集合开辟了一个崭新的内存空间,而且list的值是null。
而且list=xx.xx.()将某对象的某操作的返回值赋值给list。如果返回值是5,那么内存总就会存在两个5。
而这两个5的内存地址不相同。


第二个操作只是声明了一个list对象,并没有为其开辟新的内存空间。
而且list=xx.xx.()将某对象的某操作的返回值的引用串给list。如果返回值是5,内存中还是只有一个5。
而且list的操作会对原来指向5的引用产生影响。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2