Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 95d5c0f

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /