一直有种优化java性能的说法,就是变量应该定义在for循环外面。虽然这样写了多年的for循环,但是依旧不习惯这种别扭的写法(可读性不好)。那到底这么做有没有提升性能呢,趁着复习jvm分析下for循环。
1、首先将变量定义在里面
public void for1(HSDBBean father) throws InterruptedException {
for (int i = 0; i < 100;i++){
HSDBBean child = new HSDBBean("儿子", "child", 20);
child.setParent(father);
Thread.sleep(100000);
}
}
2、然后将变量定义在外面
public void for2(HSDBBean father) throws InterruptedException {
HSDBBean child = null;
for (int i = 0; i < 100;i++){
child = new HSDBBean("儿子", "child", 20);
child.setParent(father);
Thread.sleep(100000);
}
}
3、比较
通过比较两个方法的编译指令会发现,不管定义在外面还是里面都只是占用一个局部变量表的槽位,并不会占用更多的栈区,所以并不会影响性能