Skip to content

Commit b7ffee3

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

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

_posts/2022-06-21-java.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,36 @@ 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+
1. 对比两个对象是否相等时,先使用 hashCode() 判断,再用 equals() 判断
41+
2. 相同的对象一定要有相同的哈希值
42+
43+
假设重写 equals() 但没有重写 hashCode(),并且因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行先后判断,如果没有重写 hashCode(),则直接认为两个对象不相等。
44+
45+
46+
### 为什么不直接使用 hashCode 就确定两个对象是否相等呢
47+
48+
这是因为不同对象的 hashCode 可能相同;但 hashCode 不同的对象一定不相等,所以使用 hashCode 可以起到快速初次判断对象是否相等的作用。
49+
2050
# 内存结构
2151

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

305335
## 多线程
306336

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

0 commit comments

Comments
 (0)