首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

请问:下面的代码两种写法,有什么区别?哪个好

2013-11-03 
请教:下面的代码两种写法,有什么区别?哪个好?下面的代码两种写法,有什么区别?哪个好?(1)ListUser list

请教:下面的代码两种写法,有什么区别?哪个好?
下面的代码两种写法,有什么区别?哪个好?
(1)
List<User> list = new ArrayList<User>();

for (int i = 0; i < 5; i++) {
User user = new User();
list.add(user);
}
System.out.println(list);
(2)
List<User> list = new ArrayList<User>();

User user;
for (int i = 0; i < 5; i++) {
user = new User();
list.add(user);
}
System.out.println(list);
[解决办法]
作用域不同,后者延长了最后一次引用的生命周期,这样后者出for循环后你还可以引用到这个user,带来的副作用是你的代码依赖于for语句代码块。如果你后面都不会用到这个user,那jvm对其垃圾回收的时间会延长,性能反而下降。
当然正常情况来说,java声明变量会在堆栈中申请空间的。也就是说前者比后者更浪费空间。虽然都是生成了10个对象,但是额外的开销就是变量的空间。还是推荐第二种。

[解决办法]
第二种。。。
[解决办法]
你们说栈区分别会产生几个对象存储User地址?
[解决办法]
第二种比较好。

不过只是循环5次这么少 应该也没啥区别
[解决办法]
我想说这两种写法,效果是一样嘛?

第一种写法 list里面会五个对象

而第二种写法 只有一个
[解决办法]
楼上说的都对,其实无所谓了。
[解决办法]
第二个好,因为第一个在for循环里面声明了多次对象,浪费了空间!
[解决办法]
第二种,出于对空间的节省
[解决办法]
当然是第二种。。。
[解决办法]
个人倾向于第一种:1、只有在需要时才定义变量,简洁;2、变量的作用域控制,易维护。在这里时间和空间可以不考虑,不是核心算法。如果非要计较,还不如;list.add(new User());。况且对象也不会多。

热点排行