From ecfe12ca481cdd9cb047385a719e4f1392dbaf61 Mon Sep 17 00:00:00 2001 From: TimorYang Date: Thu, 14 Jan 2021 14:44:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Update=20Java=E5=9F=BA=E7=A1=80=E7=9F=A5?= =?UTF-8?q?=E8=AF=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据上下文语境 应该将 “除了`RuntimeException`及其子类以外,其他的`Exception`类及其子类都属于检查异常” 修改为 “除了`RuntimeException`及其子类以外,其他的`Exception`类及其子类都属于受检查异常” --- .../Java\345\237\272\347\241\200\347\237\245\350\257\206.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" index 5077a9d68c7..20c32d75aee 100644 --- "a/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" +++ "b/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -1221,7 +1221,7 @@ Java 代码在编译过程中,如果受检查异常没有被 `catch`/`throw` ![check-exception](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-12/check-exception.png) -除了`RuntimeException`及其子类以外,其他的`Exception`类及其子类都属于检查异常 。常见的受检查异常有: IO 相关的异常、`ClassNotFoundException` 、`SQLException`...。 +除了`RuntimeException`及其子类以外,其他的`Exception`类及其子类都属于受检查异常 。常见的受检查异常有: IO 相关的异常、`ClassNotFoundException` 、`SQLException`...。 **不受检查异常** From 710c582142db23d11e44f1c59a9dbbc6b32c0aa6 Mon Sep 17 00:00:00 2001 From: guide Date: Thu, 14 Jan 2021 22:42:50 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Update=20=E7=94=A8=E5=A5=BDJava=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=9E=9A=E4=B8=BE=E7=9C=9F=E7=9A=84=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E9=82=A3=E4=B9=88=E7=AE=80=E5=8D=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...51\202\243\344\271\210\347\256\200\345\215\225.md" | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git "a/docs/java/basis/\347\224\250\345\245\275Java\344\270\255\347\232\204\346\236\232\344\270\276\347\234\237\347\232\204\346\262\241\346\234\211\351\202\243\344\271\210\347\256\200\345\215\225.md" "b/docs/java/basis/\347\224\250\345\245\275Java\344\270\255\347\232\204\346\236\232\344\270\276\347\234\237\347\232\204\346\262\241\346\234\211\351\202\243\344\271\210\347\256\200\345\215\225.md" index e88f0b5c5d7..23e47ef6b8a 100644 --- "a/docs/java/basis/\347\224\250\345\245\275Java\344\270\255\347\232\204\346\236\232\344\270\276\347\234\237\347\232\204\346\262\241\346\234\211\351\202\243\344\271\210\347\256\200\345\215\225.md" +++ "b/docs/java/basis/\347\224\250\345\245\275Java\344\270\255\347\232\204\346\236\232\344\270\276\347\234\237\347\232\204\346\262\241\346\234\211\351\202\243\344\271\210\347\256\200\345\215\225.md" @@ -65,15 +65,16 @@ public class Pizza { 首先,让我们看一下以下代码段中的运行时安全性,其中 `==` 运算符用于比较状态,并且如果两个值均为null 都不会引发 NullPointerException。相反,如果使用equals方法,将抛出 NullPointerException: ```java -if(testPz.getStatus().equals(Pizza.PizzaStatus.DELIVERED)); -if(testPz.getStatus() == Pizza.PizzaStatus.DELIVERED); +Pizza.PizzaStatus pizza = null; +System.out.println(pizza.equals(Pizza.PizzaStatus.DELIVERED));//空指针异常 +System.out.println(pizza == Pizza.PizzaStatus.DELIVERED);//正常运行 ``` -对于编译时安全性,我们看另一个示例,两个不同枚举类型进行比较,使用equal方法比较结果确定为true,因为`getStatus`方法的枚举值与另一个类型枚举值一致,但逻辑上应该为false。这个问题可以使用==操作符避免。因为编译器会表示类型不兼容错误: +对于编译时安全性,我们看另一个示例,两个不同枚举类型进行比较: ```java -if(testPz.getStatus().equals(TestColor.GREEN)); -if(testPz.getStatus() == TestColor.GREEN); +if (Pizza.PizzaStatus.DELIVERED.equals(TestColor.GREEN)); // 编译正常 +if (Pizza.PizzaStatus.DELIVERED == TestColor.GREEN); // 编译失败,类型不匹配 ``` ## 4.在 switch 语句中使用枚举类型 From ec2003c16f948efb66b57722a950013a21069350 Mon Sep 17 00:00:00 2001 From: guide Date: Thu, 14 Jan 2021 22:42:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Update=20Java=E5=9F=BA=E7=A1=80=E7=9F=A5?= =?UTF-8?q?=E8=AF=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...va\345\237\272\347\241\200\347\237\245\350\257\206.md" | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git "a/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" "b/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" index 5077a9d68c7..288a2ad3420 100644 --- "a/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" +++ "b/docs/java/basis/Java\345\237\272\347\241\200\347\237\245\350\257\206.md" @@ -160,17 +160,13 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有 - Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存 - **在 C 语言中,字符串或字符数组最后都会有一个额外的字符`'\0'`来表示结束。但是,Java 语言中没有结束符这一概念。** 这是一个值得深度思考的问题,具体原因推荐看这篇文章: [https://blog.csdn.net/sszgg2006/article/details/49148189](https://blog.csdn.net/sszgg2006/article/details/49148189) -#### 1.1.5. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同? - -一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 `main()` 方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。 - -#### 1.1.6. import java 和 javax 有什么区别? +#### 1.1.5. import java 和 javax 有什么区别? 刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来使用。然而随着时间的推移,javax 逐渐地扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包确实太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准 API 的一部分。 所以,实际上 java 和 javax 没有区别。这都是一个名字。 -#### 1.1.7. 为什么说 Java 语言“编译与解释并存”? +#### 1.1.6. 为什么说 Java 语言“编译与解释并存”? 高级编程语言按照程序的执行方式分为编译型和解释型两种。简单来说,编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。比如,你想阅读一本英文名著,你可以找一个英文翻译人员帮助你阅读, 有两种选择方式,你可以先等翻译人员将全本的英文名著(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。