赞
踩
我们开发的 Java 的源代码,首先通过 Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码,这种情况属于编译执行。但是常见的 JVM,比如我们大多数情况使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。
public class MyAutoClosable implements AutoCloseable { public void doIt() { System.out.println("MyAutoClosable doing it!"); } @Override public void close() throws Exception { System.out.println("MyAutoClosable closed!"); } public static void main(String[] args) { try(MyAutoClosable myAutoClosable = new MyAutoClosable()){ myAutoClosable.doIt(); } catch (Exception e) { e.printStackTrace(); } } }
import java.util.Objects; public class MyAutoClosable implements AutoCloseable { @Override public void close() throws Exception { System.out.println("MyAutoClosable closed!"); // 不会打印 } public static void main(String[] args) { Objects.requireNonNull(args); try(MyAutoClosable myAutoClosable = new MyAutoClosable()){ // return ; System.exit(0); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("finally"); // 不会打印 } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。