最近老在纠结一个问题可能还是对虚拟机不太了解,麻烦大神帮忙解释下: public static void test() {
for(int i=0;i<10;i++){
int s = i;
System.out.println(s);
}
}和 public static void test()  {
int s = 0;
for(int i=0;i<10;i++){
s = i;
System.out.println(s);
}
}问下S在for外面定义好,还是在里面定义好,在里面s是不是每次都要再栈区创建一个变量s,还是有其他机制来优化。jvm虚拟机java优化

解决方案 »

  1.   

    定义在外面好 性能好点
       
    在外面不用每次都从新定义你可以试一下int i;
    for(i=0;i<10000;i++){
       System.out.println(i);
    }
            System.currentTimeMillis();
    上边的要比下边的快
    for(int i=0;i<10000;i++){
       System.out.println(i);
    }
            System.currentTimeMillis();
      

  2.   


    public static void main(String[] args) {
    long s = System.currentTimeMillis();
    int res=0;
    for(int i=0;i<100000;i++){
    res = i;
    }
    long e =System.currentTimeMillis();
    System.out.println("------" +(e-s));
    long s1 = System.currentTimeMillis();
    for(int i=0;i<100000;i++){
    int inRes=i;
    }
    long e1 =System.currentTimeMillis();
    System.out.println("------" + (e1-s1));
    }
    看不出区别,主要是想让人分析下在栈中如果相同变量放入,是怎么个过程
      

  3.   

    http://www.infoq.com/cn/articles/jvm-hotspot