@@ -65,7 +65,7 @@ private 方法隐式地被指定为 final,如果在子类中定义的方法和
6565
6666** 1. 静态变量**
6767
68- 静态变量在内存中只存在一份,只在类第一次实例化时初始化一次 。
68+ 静态变量在内存中只存在一份,只在类初始化时赋值一次 。
6969
7070- 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它;
7171- 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。
@@ -83,11 +83,23 @@ public class A {
8383
8484** 3. 静态语句块**
8585
86- 静态语句块和静态变量一样在类第一次实例化时运行一次 。
86+ 静态语句块在类初始化时运行一次 。
8787
88- ** 4. 初始化顺序 **
88+ ** 4. 静态内部类 **
8989
90- 静态数据优先于其它数据的初始化,静态变量和静态语句块哪个先运行取决于它们在代码中的顺序。
90+ 内部类的一种,静态内部类不依赖外部类,且不能访问外部类的非 static 变量和方法。
91+
92+ ** 5. 静态导包**
93+
94+ ``` source-java
95+ import static com.xxx.ClassName.*
96+ ```
97+
98+ 在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。
99+
100+ ** 6. 变量赋值顺序**
101+
102+ 静态变量的赋值和静态语句块的运行优先于实例变量的赋值和普通语句块的运行,静态变量的赋值和静态语句块的运行哪个先执行取决于它们在代码中的顺序。
91103
92104``` java
93105public static String staticField = " 静态变量" ;
@@ -99,8 +111,6 @@ static {
99111}
100112```
101113
102- 实例变量和普通语句块的初始化在静态变量和静态语句块初始化结束之后。
103-
104114``` java
105115public String field = " 实例变量" ;
106116```
@@ -111,7 +121,7 @@ public String field = "实例变量";
111121}
112122```
113123
114- 最后才是构造函数中的数据进行初始化
124+ 最后才运行构造函数
115125
116126``` java
117127public InitialOrderTest() {
@@ -121,25 +131,13 @@ public InitialOrderTest() {
121131
122132存在继承的情况下,初始化顺序为:
123133
124- 1 . 父类(静态变量、静态语句块块 )
134+ 1 . 父类(静态变量、静态语句块 )
1251352 . 子类(静态变量、静态语句块)
1261363 . 父类(实例变量、普通语句块)
1271374 . 父类(构造函数)
1281385 . 子类(实例变量、普通语句块)
1291396 . 子类(构造函数)
130140
131- ** 5. 静态内部类**
132-
133- 内部类的一种,静态内部类不依赖外部类,且不能访问外部类的非 static 变量和方法。
134-
135- ** 6. 静态导包**
136-
137- ``` source-java
138- import static com.xxx.ClassName.*
139- ```
140-
141- 在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。
142-
143141# 二、Object 通用方法
144142
145143## 概览
@@ -324,7 +322,7 @@ public class CloneExample {
324322
325323``` java
326324CloneExample e1 = new CloneExample ();
327- CloneExample e2 = e1. clone(); // 'clone()' has protected access in 'java.lang.Object'
325+ // CloneExample e2 = e1.clone(); // 'clone()' has protected access in 'java.lang.Object'
328326```
329327
330328接下来覆盖 Object 的 clone() 得到以下实现:
@@ -510,7 +508,7 @@ protected 用于修饰成员,表示在继承体系中成员对于子类可见
510508
511509如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例,也就是确保满足里式替换原则。
512510
513- 字段决不能是公有的,因为这么做的话就失去了对这个实例域修改行为的控制 ,客户端可以对其随意修改。可以使用共有的 getter 和 setter 方法来替换共有字段。
511+ 字段决不能是公有的,因为这么做的话就失去了对这个字段修改行为的控制 ,客户端可以对其随意修改。可以使用共有的 getter 和 setter 方法来替换共有字段。
514512
515513``` java
516514public class AccessExample {
@@ -634,9 +632,9 @@ System.out.println(InterfaceExample.x);
634632
635633** 3. 比较**
636634
637- - 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求子类和父类具有 IS-A 关系;
635+ - 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
638636- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
639- - 接口的字段只能是 static 和 final 类型的,而抽象类的域可以有多种访问权限 。
637+ - 接口的字段只能是 static 和 final 类型的,而抽象类的字段可以有多种访问权限 。
640638- 接口的方法只能是 public 的,而抽象类的方法可以由多种访问权限。
641639
642640** 4. 使用选择**
@@ -652,7 +650,7 @@ System.out.println(InterfaceExample.x);
652650- 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Compareable 接口中的 compareTo() 方法;
653651- 需要使用多重继承。
654652
655- 在很多情况下,接口优先于抽象类,因为接口没有抽象类严格的类层次接口要求 ,可以灵活地为一个类添加行为。并且从 Java 8 开始,接口也可以有默认的方法实现,使得修改接口的成本也变的很低。
653+ 在很多情况下,接口优先于抽象类,因为接口没有抽象类严格的类层次结构要求 ,可以灵活地为一个类添加行为。并且从 Java 8 开始,接口也可以有默认的方法实现,使得修改接口的成本也变的很低。
656654
657655> [ 深入理解 abstract class 和 interface] ( https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/ ) </br > [ When to Use Abstract Class and Interface] ( https://dzone.com/articles/when-to-use-abstract-class-and-intreface )
658656
@@ -773,7 +771,7 @@ String s5 = "bbb";
773771System . out. println(s4 == s5); // true
774772```
775773
776- Java 虚拟机将堆划分成新生代、老年代和永久代(PermGen Space)。在 Java 7 之前,字符串常量池被放在永久代中,而在 Java 7,它被放在堆的其它位置。这是因为永久代的空间有限,如果大量使用字符串的场景下会导致 OutOfMemoryError 错误。
774+ Java 虚拟机将堆划分成新生代、老年代和永久代(PermGen Space)。在 Java 7 之前,字符串常量池被放在永久代中,而在 Java 7,它被放在堆的其它位置。这是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError 错误。
777775
778776> [ What is String interning?] ( https://stackoverflow.com/questions/10578984/what-is-string-interning ) </br > [ 深入解析 String#intern] ( https://tech.meituan.com/in_depth_understanding_string_intern.html )
779777
0 commit comments