最近写代码的时候,一直在思考这个问题,现在空了,写篇文章记录一下吧!
先来看一段源代码,三种场景:

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

未完待续···