diff --git a/notes/Java 基础.md b/notes/Java 基础.md index 06100520..ed94785c 100644 --- a/notes/Java 基础.md +++ b/notes/Java 基础.md @@ -65,7 +65,7 @@ private 方法隐式地被指定为 final,如果在子类中定义的方法和 **1. 静态变量** -静态变量在内存中只存在一份,只在类第一次实例化时初始化一次。 +静态变量在内存中只存在一份,只在类初始化时赋值一次。 - 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它; - 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。 @@ -83,11 +83,23 @@ public class A { **3. 静态语句块** -静态语句块和静态变量一样在类第一次实例化时运行一次。 +静态语句块在类初始化时运行一次。 -**4. 初始化顺序** +**4. 静态内部类** -静态数据优先于其它数据的初始化,静态变量和静态语句块哪个先运行取决于它们在代码中的顺序。 +内部类的一种,静态内部类不依赖外部类,且不能访问外部类的非 static 变量和方法。 + +**5. 静态导包** + +```source-java +import static com.xxx.ClassName.* +``` + +在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。 + +**6. 变量赋值顺序** + +静态变量的赋值和静态语句块的运行优先于实例变量的赋值和普通语句块的运行,静态变量的赋值和静态语句块的运行哪个先执行取决于它们在代码中的顺序。 ```java public static String staticField = "静态变量"; @@ -99,8 +111,6 @@ static { } ``` -实例变量和普通语句块的初始化在静态变量和静态语句块初始化结束之后。 - ```java public String field = "实例变量"; ``` @@ -111,7 +121,7 @@ public String field = "实例变量"; } ``` -最后才是构造函数中的数据进行初始化 +最后才运行构造函数 ```java public InitialOrderTest() { @@ -121,25 +131,13 @@ public InitialOrderTest() { 存在继承的情况下,初始化顺序为: -1. 父类(静态变量、静态语句块块) +1. 父类(静态变量、静态语句块) 2. 子类(静态变量、静态语句块) 3. 父类(实例变量、普通语句块) 4. 父类(构造函数) 5. 子类(实例变量、普通语句块) 6. 子类(构造函数) -**5. 静态内部类** - -内部类的一种,静态内部类不依赖外部类,且不能访问外部类的非 static 变量和方法。 - -**6. 静态导包** - -```source-java -import static com.xxx.ClassName.* -``` - -在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。 - # 二、Object 通用方法 ## 概览 diff --git a/notes/Java 并发.md b/notes/Java 并发.md index 40f0de20..edc9dc0f 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -192,7 +192,7 @@ Executor 管理多个异步任务的执行,而无需程序员显示地管理 主要有三种 Executor: -1. CachedTreadPool:一个任务创建一个线程; +1. CachedThreadPool:一个任务创建一个线程; 2. FixedThreadPool:所有任务只能使用固定大小的线程; 3. SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。 diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index 0cee7066..73f19098 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -638,7 +638,7 @@ public int findKthLargest(int[] nums, int k) { } ``` -**堆排序** :时间复杂度 O(OlogK),空间复杂度 O(K)。 +**堆排序** :时间复杂度 O(NlogK),空间复杂度 O(K)。 ```java public int findKthLargest(int[] nums, int k) { diff --git a/notes/Linux.md b/notes/Linux.md index 6c38a0fb..135467a7 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -1150,7 +1150,8 @@ I/O Multiplexing 又被称为 Event Driven I/O,它可以让单个进程具有 同步异步是获知 I/O 完成的方式,同步需要时刻关心 I/O 是否已经完成,异步无需主动关心,在 I/O 完成时它会收到通知。 -