Skip to content

Commit 5dec081

Browse files
Update 2022-06-21-java.md
1 parent 7345c2c commit 5dec081

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

_posts/2022-06-21-java.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,33 @@ pin: true
1717

1818
反射:指动态获取的信息以及动态调用对象的方法的功能。在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性
1919

20+
## Object 类的方法
21+
1. clone()
22+
2. getClass()
23+
3. toString()
24+
4. finalize()
25+
5. equals()
26+
6. hashCode()
27+
7. wait()
28+
8. notify()
29+
9. notifyAll()
30+
31+
32+
### 双等号和 equals() 的区别
33+
1. 针对 String 引用数据类型,`==` 是用来判断两个对象的**引用**是否相等,而 `equals()` 是判断两个对象的****是否相等。
34+
2. 基本数据类型没有 `equals()` 方法
35+
3. 针对自定义对象而言,如果没有重写 `equals()` 方法,则两者没有区别,`equals()` 内部是通过 `==` 来判断。
36+
37+
38+
### 重写 equals() 为什么一定要重写 hashCode()
39+
40+
相同的对象一定要有相同的哈希值。假设重写 equals() 但没有重写 hashCode(),并且因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须覆写这两个方法
41+
42+
43+
### 为什么不直接使用 hashCode 就确定两个对象是否相等呢
44+
45+
这是因为不同对象的 hashCode 可能相同;但 hashCode 不同的对象一定不相等,所以使用 hashCode 可以起到快速初次判断对象是否相等的作用。对比两个对象时,先使用 hashCode() 判断,再用 equals() 判断,提升对比效率。
46+
2047
# 内存结构
2148

2249
![](https://img-blog.csdnimg.cn/cb59671dff1f4588b5d845f60874013b.png)
@@ -304,7 +331,12 @@ Java NIO:
304331

305332
## 多线程
306333

307-
## wait() 和 sleep() 区别
334+
### CompletableFuture
335+
336+
CompletableFuture 最大的特点是支持函数式编程,可以通过回调的方式处理计算结果、链式组合异步任务等。当异步任务完成或者发生异常时,自动调用回调对象的回调方法。
337+
338+
339+
### wait() 和 sleep() 区别
308340
1. sleep() 是 Thread 的静态方法,wait() 是 Object 的普通 final 方法
309341
2. wait() 方法需要在synchronize块或者synchronize方法里调用,作用是释放锁,然而sleep不需要
310342
3. sleep() 是休眠,wait() 是挂起

0 commit comments

Comments
 (0)