A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public List 方法名(){
List list=new List();
list=xx.xx();
return list;
}

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
总的来说,上面的实例化了类,就是给类分配了内存空间,下面的没什么都没干,只是初始化了list,并没有分配内存
回复 使用道具 举报
List list=new List();  只是创建了一个list的对象,并没有对其进行赋值

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

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
第一个代码块,你给list开辟了一个对象空间,也就是说他已经占了一定的内存空间,但是第二个代码里面,你并没有给他开辟一个内从空间。
后面他们都被赋值了,list=xx.xx() ;内容可能一样,但是他们在内存空间的地址肯定不一样。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
第一个操作为list集合开辟了一个崭新的内存空间,而且list的值是null。
而且list=xx.xx.()将某对象的某操作的返回值赋值给list。如果返回值是5,那么内存总就会存在两个5。
而这两个5的内存地址不相同。


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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马