1return与finally到底谁先执行?
    **

    2 for (;;) 与 while (true)
    以Oracle/Sun JDK8u / OpenJDK8u的实现来看,首先看javac对下面俩语句的编译结果:

    1. publicvoidfoo() {
    2. int i = 0;
    3. while (true) { i++; }
    4. }
    5. /*
    6. public void foo();
    7. Code:
    8. stack=1, locals=2, args_size=1
    9. 0: iconst_0
    10. 1: istore_1
    11. 2: iinc 1, 1
    12. 5: goto 2
    13. */

    1. publicvoidbar() {
    2. int i = 0;
    3. for (;;) { i++; }
    4. }
    5. /*
    6. public void bar();
    7. Code:
    8. stack=1, locals=2, args_size=1
    9. 0: iconst_0
    10. 1: istore_1
    11. 2: iinc 1, 1
    12. 5: goto 2
    13. */

    连javac这种几乎什么优化都不做(只做了Java语言规范规定一定要做的常量折叠,和非常少量别的优化)的编译器,对上面俩版本的代码都生成了一样的字节码。
    **