auto commit
This commit is contained in:
parent
ee032c539e
commit
089dfb1d86
@ -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 通用方法
|
||||
|
||||
## 概览
|
||||
|
@ -192,7 +192,7 @@ Executor 管理多个异步任务的执行,而无需程序员显示地管理
|
||||
|
||||
主要有三种 Executor:
|
||||
|
||||
1. CachedTreadPool:一个任务创建一个线程;
|
||||
1. CachedThreadPool:一个任务创建一个线程;
|
||||
2. FixedThreadPool:所有任务只能使用固定大小的线程;
|
||||
3. SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -1150,7 +1150,8 @@ I/O Multiplexing 又被称为 Event Driven I/O,它可以让单个进程具有
|
||||
|
||||
同步异步是获知 I/O 完成的方式,同步需要时刻关心 I/O 是否已经完成,异步无需主动关心,在 I/O 完成时它会收到通知。
|
||||
|
||||
<div align="center"> <img src="../pics//54cb3f21-485b-4159-8bf5-dcde1c4d4c36.png" width=""/> </div><br>
|
||||
<div align="center"> <img src="../pics//1a231f2a-5c2f-4231-8e0f-915aa5894347.jpg"/> </div><br>
|
||||
|
||||
|
||||
### 1. 同步-阻塞
|
||||
|
||||
@ -1168,13 +1169,7 @@ I/O Multiplexing 又被称为 Event Driven I/O,它可以让单个进程具有
|
||||
|
||||
<div align="center"> <img src="../pics//1582217a-ed46-4cac-811e-90d13a65163b.png" width=""/> </div><br>
|
||||
|
||||
### 3. 异步-阻塞
|
||||
|
||||
这是 I/O 复用使用的一种模式,通过使用 select,它可以监听多个 I/O 事件,当这些事件至少有一个发生时,用户程序会收到通知。
|
||||
|
||||
<div align="center"> <img src="../pics//dbc5c9f1-c13c-4d06-86ba-7cc949eb4c8f.jpg" width=""/> </div><br>
|
||||
|
||||
### 4. 异步-非阻塞
|
||||
### 3. 异步
|
||||
|
||||
该模式下,I/O 操作会立即返回,之后可以处理其它操作,并且在 I/O 完成时会收到一个通知,此时会中断正在处理的操作,然后继续之前的操作。
|
||||
|
||||
|
@ -98,16 +98,18 @@
|
||||
|
||||
以 (2, 3, 1, 0, 2, 5) 为例:
|
||||
|
||||
```html
|
||||
```text-html-basic
|
||||
position-0 : (2,3,1,0,2,5) // 2 <-> 1
|
||||
(1,3,2,0,2,5) // 1 <-> 3
|
||||
(3,1,1,0,2,5) // 3 <-> 0
|
||||
(0,1,1,3,2,5) // already in position
|
||||
position-1 : (0,1,1,3,2,5) // already in position
|
||||
position-2 : (0,1,1,3,2,5) // nums[i] == nums[nums[i]], exit
|
||||
(3,1,2,0,2,5) // 3 <-> 0
|
||||
(0,1,2,3,2,5) // already in position
|
||||
position-1 : (0,1,2,3,2,5) // already in position
|
||||
position-2 : (0,1,2,3,2,5) // already in position
|
||||
position-3 : (0,1,2,3,2,5) // already in position
|
||||
position-4 : (0,1,2,3,2,5) // nums[i] == nums[nums[i]], exit
|
||||
```
|
||||
|
||||
遍历到位置 2 时,该位置上的数为 1,但是第 1 个位置上已经有一个 1 的值了,因此可以知道 1 重复。
|
||||
遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复。
|
||||
|
||||
复杂度:O(N) + O(1)
|
||||
|
||||
|
@ -581,7 +581,7 @@ public class MergeSort {
|
||||
for (int k = lo; k <= hi; k++) {
|
||||
if (i > mid) a[k] = aux[j++];
|
||||
else if (j > hi) a[k] = aux[i++];
|
||||
else if (aux[i].compareTo(a[j]) < 0) a[k] = aux[i++]; // 先进行这一步,保证稳定性
|
||||
else if (aux[i].compareTo(a[j]) <= 0) a[k] = aux[i++]; // 先进行这一步,保证稳定性
|
||||
else a[k] = aux[j++];
|
||||
}
|
||||
}
|
||||
|
BIN
pics/1a231f2a-5c2f-4231-8e0f-915aa5894347.jpg
Normal file
BIN
pics/1a231f2a-5c2f-4231-8e0f-915aa5894347.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
Loading…
x
Reference in New Issue
Block a user