diff --git a/notes/Java 基础.md b/notes/Java 基础.md index c6ade7a6..d3228180 100644 --- a/notes/Java 基础.md +++ b/notes/Java 基础.md @@ -28,7 +28,6 @@ - # 关键字 ## 1. final @@ -37,7 +36,8 @@ 声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。 -对于基本类型,final 使数值不变;对于引用对象,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 +- 对于基本类型,final 使数值不变; +- 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 **方法** @@ -51,15 +51,16 @@ private 方法隐式地被指定为 final,如果在子类中定义的方法和 ## 2. static -**变量** +**静态变量** -静态变量在内存中只存在一份,只在类第一次实例化时初始化一次,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。 +静态变量在内存中只存在一份,只在类第一次实例化时初始化一次。 -但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。 +- 静态变量: 类所有的实例都共享静态变量,可以直接通过类名来访问它; +- 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。 -**方法** +**静态方法** -静态方法在类加载的时候就存在了,它不依赖于任何实例,所以 static 方法必须实现,也就是说他不能是抽象方法 abstract。 +静态方法在类加载的时候就存在了,它不依赖于任何实例,所以 static 方法必须实现,也就是说它不能是抽象方法(abstract)。 **静态语句块** @@ -75,19 +76,19 @@ public static String staticField = "静态变量"; ```java static { - System.out.println("静态初始化块"); + System.out.println("静态语句块"); } ``` 实例变量和普通语句块的初始化在静态变量和静态语句块初始化结束之后。 ```java -public String field = "变量"; +public String field = "实例变量"; ``` ```java { - System.out.println("初始化块"); + System.out.println("普通语句块"); } ``` @@ -95,18 +96,18 @@ public String field = "变量"; ```java public InitialOrderTest() { - System.out.println("构造器"); + System.out.println("构造函数"); } ``` 存在继承的情况下,初始化顺序为: -1. 父类(静态变量、静态初始化块) -2. 子类(静态变量、静态初始化块) -3. 父类(变量、初始化块) -4. 父类(构造器) -5. 子类(变量、初始化块) -6. 子类(构造器) +1. 父类(静态变量、静态语句块块) +2. 子类(静态变量、静态语句块) +3. 父类(实例变量、普通语句块) +4. 父类(构造函数) +5. 子类(实例变量、普通语句块) +6. 子类(构造函数) # Object 通用方法