diff --git a/docs/java/basis/java-basic-questions-01.md b/docs/java/basis/java-basic-questions-01.md index 1d9793cc..32330422 100644 --- a/docs/java/basis/java-basic-questions-01.md +++ b/docs/java/basis/java-basic-questions-01.md @@ -50,7 +50,7 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有 **Java 程序从源代码到运行的过程如下图所示:** -![Java程序转变为机器代码的过程](/Users/guide/Documents/GitHub/JavaGuide/docs/java/basis/images/java程序转变为机器代码的过程.png) +![Java程序转变为机器代码的过程](./images/java程序转变为机器代码的过程.png) 我们需要格外注意的是 `.class->机器码` 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(just-in-time compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 **Java 是编译与解释共存的语言** 。 diff --git a/docs/java/basis/java-basic-questions-03.md b/docs/java/basis/java-basic-questions-03.md index 0110c1d0..ab3e5eda 100644 --- a/docs/java/basis/java-basic-questions-03.md +++ b/docs/java/basis/java-basic-questions-03.md @@ -221,7 +221,7 @@ JDK 提供了很多内置的注解(比如 `@Override` 、`@Deprecated`), 比如下面这段 IO 操作的代码: -![](/Users/guide/Documents/GitHub/JavaGuide/docs/java/basis/images/checked-exception.png) +![](./images/checked-exception.png) 除了`RuntimeException`及其子类以外,其他的`Exception`类及其子类都属于受检查异常 。常见的受检查异常有: IO 相关的异常、`ClassNotFoundException` 、`SQLException`...。 @@ -229,7 +229,7 @@ JDK 提供了很多内置的注解(比如 `@Override` 、`@Deprecated`), `RuntimeException` 及其子类都统称为非受检查异常,例如:`NullPointerException`、`NumberFormatException`(字符串转换为数字)、`ArrayIndexOutOfBoundsException`(数组越界)、`ClassCastException`(类型转换错误)、`ArithmeticException`(算术错误)等。 -![](/Users/guide/Documents/GitHub/JavaGuide/docs/java/basis/images/unchecked-exception.png) +![](./images/unchecked-exception.png) ### Throwable 类常用方法有哪些?