最近写代码的时候,一直在思考这个问题,现在空了,写篇文章记录一下吧!
先来看一段源代码,三种场景:
public static List<Demo> for1(){
System.out.println("1."+System.currentTimeMillis());
Demo demo = null;
List<Demo> demos = new ArrayList<Demo>();
for(int i=0;i<1000000;i++){
demo = new Demo();
demo.setId(i);
demos.add(demo);
}
System.out.println("2."+System.currentTimeMillis());
return demos;
}
public static List<Demo> for2(){
Demo demo = new Demo();
List<Demo> demos = new ArrayList<Demo>();
for(int i=0;i<10;i++){
demo.setId(i);
demos.add(demo);
}
return demos;
}
public static List<Demo> for3(){
System.out.println("1."+System.currentTimeMillis());
List<Demo> demos = new ArrayList<Demo>();
for(int i=0;i<1000000;i++){
Demo demo = new Demo();
demo.setId(i);
demos.add(demo);
}
System.out.println("2."+System.currentTimeMillis());
return demos;
}
for2先排除了,因为代码是有问题的,结果全是一样的。
for1(简称“f1”)是循环外new对象 for3(简称“f3”)是循环内new对象。
看接下来的知乎:https://www.zhihu.com/question/31751468
未完待续···