Skip to content

Commit 95d5c0f

Browse files
committed
Update Java基础知识.md
1 parent 7c12675 commit 95d5c0f

File tree

1 file changed

+64
-10
lines changed

1 file changed

+64
-10
lines changed

docs/java/Java基础知识.md

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- [1.2.4. 自增自减运算符](#124-自增自减运算符)
2222
- [1.2.5. Java中的几种基本数据类型是什么,对应的,各自占用多少字节呢?](#125-java中的几种基本数据类型是什么对应的各自占用多少字节呢)
2323
- [1.2.6. 自动装箱与拆箱](#126-自动装箱与拆箱)
24+
- [1.2.7. continue、break、和return的区别是什么?](#127-continuebreak和return的区别是什么)
2425
- [1.3. 方法(函数)](#13-方法函数)
2526
- [1.3.1. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#131-什么是方法的返回值返回值在类的方法里的作用是什么)
2627
- [1.3.2. 为什么 Java 中只有值传递?](#132-为什么-java-中只有值传递)
@@ -65,8 +66,9 @@
6566
- [3.1.1. Collections 工具类和 Arrays 工具类常见方法总结](#311-collections-工具类和-arrays-工具类常见方法总结)
6667
- [3.2. 异常](#32-异常)
6768
- [3.2.1. Java 异常类层次结构图](#321-java-异常类层次结构图)
68-
- [3.2.1.1. Throwable 类常用方法](#3211-throwable-类常用方法)
69-
- [3.2.1.2. 异常处理总结](#3212-异常处理总结)
69+
- [3.2.2. Throwable 类常用方法](#322-throwable-类常用方法)
70+
- [3.2.3. try-catch-finally](#323-try-catch-finally)
71+
- [3.2.4.使用 `try-with-resources` 来代替`try-catch-finally`](#324使用-try-with-resources-来代替try-catch-finally)
7072
- [3.3. 多线程](#33-多线程)
7173
- [3.3.1. 简述线程、程序、进程的基本概念。以及他们之间关系是什么?](#331-简述线程程序进程的基本概念以及他们之间关系是什么)
7274
- [3.3.2. 线程有哪些基本状态?](#332-线程有哪些基本状态)
@@ -265,6 +267,18 @@ Java**中**有8种基本数据类型,分别为:
265267
266268
更多内容见:[深入剖析 Java 中的装箱和拆箱](https://www.cnblogs.com/dolphin0520/p/3780005.html)
267269
270+
#### 1.2.7. continuebreak、和return的区别是什么?
271+
272+
在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:
273+
274+
1. continue :指跳出当前的这一次循环,继续下一次循环。
275+
2. break :指跳出整个循环体,继续执行循环下面的语句。
276+
277+
return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:
278+
279+
1. `return;` :直接使用 return 结束方法执行,用于没有返回值函数的方法
280+
2. `return value;` :return 一个特定值,用于有返回值函数的方法
281+
268282
### 1.3. 方法(函数)
269283
270284
#### 1.3.1. 什么是方法的返回值?返回值在类的方法里的作用是什么?
@@ -708,19 +722,18 @@ String s = input.readLine();
708722
709723
**注意:异常和错误的区别:异常能被程序本身处理,错误是无法处理。**
710724
711-
##### 3.2.1.1. Throwable 类常用方法
725+
#### 3.2.2. Throwable 类常用方法
712726
713-
- **public string getMessage()**:返回异常发生时的简要描述
714-
- **public string toString()**:返回异常发生时的详细信息
715-
- **public string getLocalizedMessage()**:返回异常对象的本地化信息。使用 Throwable 的子类覆盖这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与 getMessage()返回的结果相同
716-
- **public void printStackTrace()**:在控制台上打印 Throwable 对象封装的异常信息
727+
- **`public string getMessage()`**:返回异常发生时的简要描述
728+
- **`public string toString()`**:返回异常发生时的详细信息
729+
- **`public string getLocalizedMessage()`**:返回异常对象的本地化信息。使用 `Throwable` 的子类覆盖这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与 `getMessage()`返回的结果相同
730+
- **`public void printStackTrace()`**:在控制台上打印 `Throwable` 对象封装的异常信息
717731
718-
##### 3.2.1.2. 异常处理总结
732+
#### 3.2.3. try-catch-finally
719733
720734
- **try 块:** 用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。
721735
- **catch 块:** 用于处理 try 捕获到的异常。
722-
- **finally 块:** 无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return
723-
语句时,finally 语句块将在方法返回之前被执行。
736+
- **finally 块:** 无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回之前被执行。
724737
725738
**在以下 4 种特殊情况下,finally 块不会被执行:**
726739
@@ -749,6 +762,47 @@ public class Test {
749762
750763
如果调用 `f(2)`,返回值将是 0,因为 finally 语句的返回值覆盖了 try 语句块的返回值。
751764
765+
#### 3.2.4.使用 `try-with-resources` 来代替`try-catch-finally`
766+
767+
Effecitve Java》中明确指出:
768+
769+
> 面对必须要关闭的资源,我们总是应该优先使用try-with-resources而不是`try-finally`。随之产生的代码更简短,更清晰,产生的异常对我们也更有用。`try-with-resources`语句让我们更容易编写必须要关闭的资源的代码,若采用`try-finally`则几乎做不到这点。
770+
771+
Java 中类似于`InputStream`、`OutputStream` 、`Scanner` 、`PrintWriter`等的资源都需要我们调用`close()`方法来手动关闭,一般情况下我们都是通过`try-catch-finally`语句来实现这个需求,如下:
772+
773+
```java
774+
//读取文本文件的内容
775+
Scanner scanner = null;
776+
try {
777+
scanner = new Scanner(new File("D://read.txt"));
778+
while (scanner.hasNext()) {
779+
System.out.println(scanner.nextLine());
780+
}
781+
} catch (FileNotFoundException e) {
782+
e.printStackTrace();
783+
} finally {
784+
if (scanner != null) {
785+
scanner.close();
786+
}
787+
}
788+
```
789+
790+
使用Java 7之后的 `try-with-resources` 语句改造上面的代码:
791+
792+
```java
793+
try (Scanner scanner = new Scanner(new File("test.txt"))) {
794+
while (scanner.hasNext()) {
795+
System.out.println(scanner.nextLine());
796+
}
797+
} catch (FileNotFoundException fnfe) {
798+
fnfe.printStackTrace();
799+
}
800+
```
801+
802+
当然多个资源需要关闭的时候,使用 `try-with-resources` 实现起来也非常简单,如果你还是用`try-catch-finally`可能会带来很多问题。
803+
804+
通过使用分号分隔,可以在`try-with-resources`块中声明多个资源:
805+
752806
### 3.3. 多线程
753807
754808
#### 3.3.1. 简述线程、程序、进程的基本概念。以及他们之间关系是什么?

0 commit comments

Comments
 (0)