Skip to content

Commit db70fa9

Browse files
committed
java重要知识点
1 parent ff5cd61 commit db70fa9

24 files changed

+281
-215
lines changed

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -191,26 +191,26 @@
191191
## Java重要知识点
192192

193193
- [彻底弄懂Java中的Unicode和UTF-8编码](docs/basic-extra-meal/java-unicode.md)
194-
- [Java中int、Integer、new Integer之间的区别](docs/basic-extra-meal/int-cache.md)
194+
- [Java中new Integer与Integer.valueOf的区别](docs/basic-extra-meal/int-cache.md)
195195
- [深入剖析Java中的拆箱和装箱](docs/basic-extra-meal/box.md)
196-
- [彻底讲明白的Java浅拷贝与深拷贝](docs/basic-extra-meal/deep-copy.md)
196+
- [一文彻底讲明白的Java中的浅拷贝与深拷贝](docs/basic-extra-meal/deep-copy.md)
197197
- [深入理解Java中的hashCode方法](docs/basic-extra-meal/hashcode.md)
198-
- [一次性搞清楚equals和hashCode](docs/basic-extra-meal/equals-hashcode.md)
198+
- [为什么重写equals方法的时候必须要重写hashCode方法?](docs/basic-extra-meal/equals-hashcode.md)
199199
- [Java重写(Overriding)时应当遵守的11条规则](docs/basic-extra-meal/Overriding.md)
200200
- [Java到底是值传递还是引用传递?](docs/basic-extra-meal/pass-by-value.md)
201-
- [Java不能实现真正泛型的原因是什么?](docs/basic-extra-meal/true-generic.md)
202-
- [详解Java中Comparable和Comparator的区别](docs/basic-extra-meal/comparable-omparator.md)
203-
- [jdk9为何要将String的底层实现由char[]改成了byte[]?](docs/basic-extra-meal/jdk9-char-byte-string.md)
201+
- [详解Java中Comparable和Comparator接口的区别](docs/basic-extra-meal/comparable-omparator.md)
202+
- [jdk9为什么要将String的底层实现由char数组改成了byte数组?](docs/basic-extra-meal/jdk9-char-byte-string.md)
204203
- [为什么JDK源码中,无限循环大多使用for(;;)而不是while(true)?](docs/basic-extra-meal/jdk-while-for-wuxian-xunhuan.md)
205-
- [先有Class还是先有Object?](docs/basic-extra-meal/class-object.md)
204+
- [Java 中,先有Class还是先有Object?](docs/basic-extra-meal/class-object.md)
205+
- [详解Java中instanceof关键字的用法](docs/oo/instanceof.md)
206206
- [instanceof关键字是如何实现的?](docs/basic-extra-meal/instanceof-jvm.md)
207-
- [Java instanceof关键字用法](docs/oo/instanceof.md)
208207
- [深入理解Java中的不可变对象](docs/basic-extra-meal/immutable.md)
209208
- [Java中可变参数的使用](docs/basic-extra-meal/varables.md)
210-
- [深入理解Java泛型](docs/basic-extra-meal/generic.md)
211-
- [深入理解Java注解](docs/basic-extra-meal/annotation.md)
212-
- [Java枚举(enum)](docs/basic-extra-meal/enum.md)
213-
- [大白话说Java反射:入门、使用、原理](docs/basic-extra-meal/fanshe.md)
209+
- [深入理解Java中的泛型](docs/basic-extra-meal/generic.md)
210+
- [Java不能实现真正泛型的原因是什么?](docs/basic-extra-meal/true-generic.md)
211+
- [深入理解Java中的注解](docs/basic-extra-meal/annotation.md)
212+
- [新来个技术总监,彻底把 Java 枚举(enum)讲清楚了](docs/basic-extra-meal/enum.md)
213+
- [大白话说清楚Java反射:入门、使用、原理](docs/basic-extra-meal/fanshe.md)
214214

215215
## Java网络编程
216216

docs/.vuepress/sidebar.ts

Lines changed: 21 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -198,90 +198,27 @@ export const sidebarConfig = sidebar({
198198
prefix:"basic-extra-meal/",
199199
collapsable: true,
200200
children: [
201-
{
202-
text: "Unicode和UTF-8编码",
203-
link: "java-unicode",
204-
},
205-
{
206-
text: "new Integer和Integer.valueOf区别",
207-
link: "int-cache",
208-
},
209-
{
210-
text: "拆箱和装箱",
211-
link: "box",
212-
},
213-
{
214-
text: "浅拷贝与深拷贝",
215-
link: "deep-copy",
216-
},
217-
{
218-
text: "深入理解Java中的hashCode方法",
219-
link: "hashcode",
220-
},
221-
{
222-
text: "重写equals时为什么要重写hashCode",
223-
link: "equals-hashcode",
224-
},
225-
{
226-
text: "重写时应当遵守的11条规则",
227-
link: "Overriding",
228-
},
229-
{
230-
text: "Java到底是值传递还是引用传递",
231-
link: "pass-by-value",
232-
},
233-
{
234-
text: "Java为什么不能实现真正的泛型",
235-
link: "true-generic",
236-
},
237-
{
238-
text: "Comparable和Comparator的区别",
239-
link: "comparable-omparator",
240-
},
241-
{
242-
text: "JDK9中String为什么由char[]改成byte[]",
243-
link: "jdk9-char-byte-string",
244-
},
245-
{
246-
text: "JDK源码无限循环用for(;;)还是while(true)",
247-
link: "jdk-while-for-wuxian-xunhuan",
248-
},
249-
{
250-
text: "先有Class还是先有Object",
251-
link: "class-object",
252-
},
253-
{
254-
text: "instanceof关键字是如何实现的",
255-
link: "instanceof-jvm",
256-
},
257-
{
258-
text: "instanceof",
259-
link: "oo/instanceof",
260-
},
261-
{
262-
text: "不可变对象",
263-
link: "basic-extra-meal/immutable",
264-
},
265-
{
266-
text: "可变参数",
267-
link: "basic-extra-meal/varables",
268-
},
269-
{
270-
text: "泛型",
271-
link: "basic-extra-meal/generic",
272-
},
273-
{
274-
text: "注解",
275-
link: "basic-extra-meal/annotation",
276-
},
277-
{
278-
text: "枚举",
279-
link: "basic-extra-meal/enum",
280-
},
281-
{
282-
text: "反射",
283-
link: "basic-extra-meal/fanshe",
284-
},
201+
"java-unicode",
202+
"int-cache",
203+
"box",
204+
"deep-copy",
205+
"hashcode",
206+
"equals-hashcode",
207+
"Overriding",
208+
"pass-by-value",
209+
"comparable-omparator",
210+
"jdk9-char-byte-string",
211+
"jdk-while-for-wuxian-xunhuan",
212+
"class-object",
213+
"instanceof",
214+
"instanceof-jvm",
215+
"immutable"
216+
"varables",
217+
"generic",
218+
"true-generic",
219+
"annotation",
220+
"enum",
221+
"fanshe",
285222
],
286223
},
287224
{

docs/basic-extra-meal/Overriding.md

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
---
2+
title: Java重写(Overriding)时应当遵守的11条规则
3+
shortTitle: 重写时应当遵守的11条规则
24
category:
35
- Java核心
46
tag:
5-
- Java
7+
- Java重要知识点
8+
description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java重写(Overriding)时应当遵守的11条规则
9+
head:
10+
- - meta
11+
- name: keywords
12+
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,java,重写,Overriding
613
---
714

8-
# Java重写(Overriding)时应当遵守的11条规则
915

1016
重写(Overriding)算是 Java 中一个非常重要的概念,理解重写到底是什么对每个 Java 程序员来说都至关重要,这篇文章就来给大家说说重写过程中应当遵守的 12 条规则。
1117

12-
### 01、什么是重写?
18+
## 01、什么是重写?
1319

1420
重写带来了一种非常重要的能力,可以让子类重新实现从超类那继承过来的方法。在下面这幅图中,Animal 是父类,Dog 是子类,Dog 重新实现了 `move()` 方法用来和父类进行区分,毕竟狗狗跑起来还是比较有特色的。
1521

1622
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/basic-extra-meal/Overriding-1.png)
1723

1824
重写的方法和被重写的方法,不仅方法名相同,参数也相同,只不过,方法体有所不同。
1925

20-
### 02、哪些方法可以被重写?
26+
## 02、哪些方法可以被重写?
2127

22-
**规则一:只能重写继承过来的方法**
28+
### **规则一:只能重写继承过来的方法**
2329

2430
因为重写是在子类重新实现从父类继承过来的方法时发生的,所以只能重写继承过来的方法,这很好理解。这就意味着,只能重写那些被 public、protected 或者 default 修饰的方法,private 修饰的方法无法被重写。
2531

@@ -63,9 +69,9 @@ public class Dog extends Animal {
6369
}
6470
```
6571

66-
### 03、哪些方法不能被重写?
72+
## 03、哪些方法不能被重写?
6773

68-
**规则二:final、static 的方法不能被重写**
74+
### **规则二:final、static 的方法不能被重写**
6975

7076
一个方法是 final 的就意味着它无法被子类继承到,所以就没办法重写。
7177

@@ -91,9 +97,9 @@ public class Animal {
9197

9298
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/basic-extra-meal/Overriding-3.png)
9399

94-
### 04、重写方法的要求
100+
## 04、重写方法的要求
95101

96-
**规则三:重写的方法必须有相同的参数列表**
102+
### **规则三:重写的方法必须有相同的参数列表**
97103

98104
```java
99105
public class Animal {
@@ -143,7 +149,7 @@ public class Dog extends Animal {
143149

144150
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/basic-extra-meal/Overriding-4.png)
145151

146-
**规则五:重写的方法不能使用限制等级更严格的权限修饰符**
152+
### **规则五:重写的方法不能使用限制等级更严格的权限修饰符**
147153

148154
可以这样来理解:
149155

@@ -171,7 +177,7 @@ public class Dog extends Animal {
171177

172178
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/basic-extra-meal/Overriding-5.png)
173179

174-
**规则六:重写后的方法不能抛出比父类中更高级别的异常**
180+
### **规则六:重写后的方法不能抛出比父类中更高级别的异常**
175181

176182
举例来说,如果父类中的方法抛出的是 IOException,那么子类中重写的方法不能抛出 Exception,可以是 IOException 的子类或者不抛出任何异常。这条规则只适用于可检查的异常。
177183

@@ -231,9 +237,9 @@ Error:(9, 16) java: com.itwanger.overriding.Dog中的eat()无法覆盖com.itwang
231237
被覆盖的方法未抛出java.lang.Exception
232238
```
233239

234-
### 05、如何调用被重写的方法?
240+
## 05、如何调用被重写的方法?
235241

236-
**规则七:可以在子类中通过 super 关键字来调用父类中被重写的方法**
242+
### **规则七:可以在子类中通过 super 关键字来调用父类中被重写的方法**
237243

238244
子类继承父类的方法而不是重新实现是很常见的一种做法,在这种情况下,可以按照下面的形式调用父类的方法:
239245

@@ -260,15 +266,15 @@ public class Dog extends Animal {
260266
}
261267
```
262268

263-
### 06、重写和构造方法
269+
## 06、重写和构造方法
264270

265-
**规则八:构造方法不能被重写**
271+
### **规则八:构造方法不能被重写**
266272

267273
因为构造方法很特殊,而且子类的构造方法不能和父类的构造方法同名(类名不同),所以构造方法和重写之间没有任何关系。
268274

269-
### 07、重写和抽象方法
275+
## 07、重写和抽象方法
270276

271-
**规则九:如果一个类继承了抽象类,抽象类中的抽象方法必须在子类中被重写**
277+
### **规则九:如果一个类继承了抽象类,抽象类中的抽象方法必须在子类中被重写**
272278

273279
先来看这样一个接口类:
274280

@@ -306,15 +312,15 @@ public class BullDog extends AbstractDog {
306312
}
307313
```
308314

309-
### 08、重写和 synchronized 方法
315+
## 08、重写和 synchronized 方法
310316

311-
**规则十:synchronized 关键字对重写规则没有任何影响**
317+
### **规则十:synchronized 关键字对重写规则没有任何影响**
312318

313319
synchronized 关键字用于在多线程环境中获取和释放监听对象,因此它对重写规则没有任何影响,这就意味着 synchronized 方法可以去重写一个非同步方法。
314320

315-
### 09、重写和 strictfp 方法
321+
## 09、重写和 strictfp 方法
316322

317-
**规则十一:strictfp 关键字对重写规则没有任何影响**
323+
### **规则十一:strictfp 关键字对重写规则没有任何影响**
318324

319325
如果你想让浮点运算更加精确,而且不会因为硬件平台的不同导致执行的结果不一致的话,可以在方法上添加 strictfp 关键字。因此 strictfp 关键和重写规则无关。
320326

docs/basic-extra-meal/annotation.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
---
2+
title: 深入理解Java中的注解
3+
shortTitle: 深入理解Java中的注解
24
category:
35
- Java核心
46
tag:
5-
- Java
7+
- Java重要知识点
8+
description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入理解Java中的注解
9+
head:
10+
- - meta
11+
- name: keywords
12+
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,java,注解,annotation
613
---
714

8-
# 深入理解Java注解
9-
1015
“二哥,这节讲注解吗?”三妹问。
1116

1217
“是的。”我说,“注解是 Java 中非常重要的一部分,但经常被忽视也是真的。之所以这么说是因为我们更倾向成为一名注解的使用者而不是创建者。`@Override` 注解用过吧?但你知道怎么自定义一个注解吗?”

docs/basic-extra-meal/box.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
---
2+
title: 深入剖析Java中的拆箱和装箱
3+
shortTitle: 深入剖析Java中的拆箱和装箱
24
category:
35
- Java核心
46
tag:
5-
- Java
7+
- Java重要知识点
8+
description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入剖析Java中的拆箱和装箱
9+
head:
10+
- - meta
11+
- name: keywords
12+
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,装箱,拆箱,包装类型
613
---
714

8-
# 深入剖析Java中的拆箱和装箱
915

1016
“哥,听说 Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double,是这样吗?”从三妹这句话当中,能听得出来,她已经提前预习这块内容了。
1117

docs/basic-extra-meal/class-object.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
---
2+
title: Java 中,先有Class还是先有Object?
3+
shortTitle: 先有Class还是先有Object?
24
category:
35
- Java核心
46
tag:
5-
- Java
7+
- Java重要知识点
8+
description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java 中,先有Class还是先有Object?
9+
head:
10+
- - meta
11+
- name: keywords
12+
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,java,class,object
613
---
714

8-
# 先有Class还是先有Object?
15+
916

1017
Java 对象模型中:
1118

@@ -18,7 +25,7 @@ Java 对象模型中:
1825

1926
针对这个问题,我在知乎上看到了 R 大的一个回答,正好解答了我心中的疑惑,就分享出来给各位小伙伴一个参考和启发~
2027

21-
>作者:RednaxelaFX,整理:沉默王二,参考链接:https://www.zhihu.com/question/30301819/answer/47539163
28+
>作者:RednaxelaFX,整理:沉默王二,参考链接:[https://www.zhihu.com/question/30301819/answer/47539163](https://www.zhihu.com/question/30301819/answer/47539163)
2229
2330
-----
2431

0 commit comments

Comments
 (0)