Skip to content

Commit b7ea86d

Browse files
committed
Update Java Notes
1 parent 897c4df commit b7ea86d

File tree

1 file changed

+34
-38
lines changed

1 file changed

+34
-38
lines changed

Java.md

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -668,14 +668,11 @@ public static void sum(int... nums){
668668

669669
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
670670

671-
注意:方法必须先创建才可以使用,该过程成为方法定义
672-
方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
673-
674-
在方法内部定义的叫局部变量,局部变量不能加static,包括protected, private, public这些也不能加
675-
676-
原因:局部变量是保存在栈中的,而静态变量保存于方法区,局部变量出了方法就被栈回收了,而静态变量不会,所以在局部变量前不能加static关键字,静态变量是定义在类中,又叫类变量
671+
注意:方法必须先创建才可以使用,该过程成为方法定义,方法创建后并不是直接可以运行的,需要手动使用后才执行,该过程成为方法调用
677672

673+
在方法内部定义的叫局部变量,局部变量不能加 static,包括 protected、private、public 这些也不能加
678674

675+
原因:局部变量是保存在栈中的,而静态变量保存于方法区(JDK8 在堆中),局部变量出了方法就被栈回收了,而静态变量不会,所以在局部变量前不能加 static 关键字,静态变量是定义在类中,又叫类变量
679676

680677

681678

@@ -708,8 +705,8 @@ public static 返回值类型 方法名(参数) {
708705

709706
如果方法操作完毕
710707

711-
* void类型的方法,直接调用即可,而且方法体中一般不写return
712-
* 非void类型的方法,推荐用变量接收调用
708+
* void 类型的方法,直接调用即可,而且方法体中一般不写return
709+
* 非 void 类型的方法,推荐用变量接收调用
713710

714711
原理:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。
715712

@@ -735,7 +732,7 @@ public static 返回值类型 方法名(参数) {
735732
}
736733
```
737734

738-
* void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
735+
* void 表示无返回值,可以省略 return,也可以单独的书写 return,后面不加数据
739736

740737
```java
741738
public static void methodTwo() {
@@ -840,6 +837,7 @@ public class MethodDemo {
840837
值传递和引用传递的区别在于传递后会不会影响实参的值:值传递会创建副本,引用传递不会创建副本
841838

842839
* 基本数据类型:形式参数的改变,不影响实际参数
840+
843841
每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失
844842

845843
```java
@@ -857,8 +855,9 @@ public class MethodDemo {
857855
```
858856

859857
* 引用类型:形式参数的改变,影响实际参数的值
858+
860859
**引用数据类型的传参,本质上是将对象的地址以值的方式传递到形参中**,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果
861-
860+
862861
```java
863862
public class PassByValueExample {
864863
public static void main(String[] args) {
@@ -874,7 +873,7 @@ public class MethodDemo {
874873
String name;//.....
875874
}
876875
```
877-
876+
878877

879878

880879

@@ -885,7 +884,7 @@ public class MethodDemo {
885884

886885
### 枚举
887886

888-
枚举是Java中的一种特殊类型,为了做信息的标志和信息的分类
887+
枚举是 Java 中的一种特殊类型,为了做信息的标志和信息的分类
889888

890889
定义枚举的格式:
891890

@@ -964,9 +963,9 @@ public class MethodDemo {
964963

965964
### Debug
966965

967-
Debug是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
966+
Debug 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
968967

969-
加断点->Debug运行->单步运行->看Debugger窗口->看Console窗口
968+
加断点 → Debug 运行 → 单步运行 → 看 Debugger 窗口 → 看 Console 窗口
970969

971970
![](https://gitee.com/seazean/images/raw/master/Java/Debug按键说明.png)
972971

@@ -992,11 +991,11 @@ Debug是供程序员使用的程序调试工具,它可以用于查看程序的
992991

993992
**三大特征:封装,继承,多态**
994993

995-
面向对象最重要的两个概念:类和对象
994+
面向对象最重要的两个概念:类和对象
996995

997-
* 类:相同事物共同特征的描述。类只是学术上的一个概念并非真实存在的,只能描述一类事物
998-
* 对象:是真实存在的实例, 实例==对象**对象是类的实例化**
999-
* 结论:有了类和对象就可以描述万千世界所有的事物。 必须先有类才能有对象
996+
* 类:相同事物共同特征的描述。类只是学术上的一个概念并非真实存在的,只能描述一类事物
997+
* 对象:是真实存在的实例, 实例==对象**对象是类的实例化**
998+
* 结论:有了类和对象就可以描述万千世界所有的事物。 必须先有类才能有对象
1000999

10011000

10021001

@@ -1090,8 +1089,8 @@ public class ClassDemo {
10901089

10911090
封装的步骤:
10921091

1093-
1. **成员变量应该私有,用private修饰,只能在本类中直接访问**
1094-
2. **提供成套的getter和setter方法暴露成员变量的取值和赋值**
1092+
1. **成员变量应该私有,用 private 修饰,只能在本类中直接访问**
1093+
2. **提供成套的 getter 和 setter 方法暴露成员变量的取值和赋值**
10951094

10961095
使用 private 修饰成员变量的原因:实现数据封装,不想让别人使用修改你的数据,比较安全
10971096

@@ -1106,7 +1105,7 @@ public class ClassDemo {
11061105
this 关键字的作用:
11071106

11081107
* this 关键字代表了当前对象的引用
1109-
* this 出现在方法中:**哪个对象调用这个方法this就代表谁**
1108+
* this 出现在方法中:**哪个对象调用这个方法 this 就代表谁**
11101109
* this 可以出现在构造器中:代表构造器正在初始化的那个对象
11111110
* this 可以区分变量是访问的成员变量还是局部变量
11121111

@@ -1120,23 +1119,19 @@ this 关键字的作用:
11201119

11211120
#### 基本介绍
11221121

1123-
Java是通过成员变量是否有static修饰来区分是类的还是属于对象的
1122+
Java 是通过成员变量是否有 static 修饰来区分是类的还是属于对象的
11241123

11251124
static 静态修饰的成员(方法和成员变量)属于类本身的。
11261125

1127-
按照有无static修饰,成员变量和方法可以分为:
1126+
按照有无 static 修饰,成员变量和方法可以分为:
11281127

11291128
* 成员变量:
1130-
* 静态成员变量(类变量):
1131-
有static修饰的成员变量称为静态成员变量也叫类变量,属于类本身,**与类一起加载一次,只有一个**,直接用类名访问即可。
1132-
* 实例成员变量:
1133-
无static修饰的成员变量称为实例成员变量,属于类的每个对象的。**与类的对象一起加载**,对象有多少个,实例成员变量就加载多少个,必须用类的对象来访问。
1134-
1129+
* 静态成员变量(类变量):static 修饰的成员变量,属于类本身,**与类一起加载一次,只有一个**,直接用类名访问即可
1130+
* 实例成员变量:无 static 修饰的成员变量,属于类的每个对象的,**与类的对象一起加载**,对象有多少个,实例成员变量就加载多少个,必须用类的对象来访问
1131+
11351132
* 成员方法:
1136-
* 静态方法:
1137-
有static修饰的成员方法称为静态方法也叫类方法,属于类本身的,直接用类名访问即可。
1138-
* 实例方法:
1139-
无static修饰的成员方法称为实例方法,属于类的每个对象的,必须用类的对象来访问。
1133+
* 静态方法:有 static 修饰的成员方法称为静态方法也叫类方法,属于类本身的,直接用类名访问即可
1134+
* 实例方法:无 static 修饰的成员方法称为实例方法,属于类的每个对象的,必须用类的对象来访问
11401135

11411136

11421137

@@ -1157,12 +1152,12 @@ static 静态修饰的成员(方法和成员变量)属于类本身的。
11571152

11581153
成员方法的访问语法:
11591154

1160-
* 静态方法:有static修饰,属于类
1155+
* 静态方法:有 static 修饰,属于类
11611156

11621157
* 类名.静态方法(同一个类中访问静态成员可以省略类名不写)
1163-
* 对象.静态方法(不推荐,参考 JVM类加载--> 字节码 --> 方法调用)
1158+
* 对象.静态方法(不推荐,参考 JVM → 运行机制 → 方法调用)
11641159

1165-
* 实例方法:无static修饰,属于对象
1160+
* 实例方法:无 static 修饰,属于对象
11661161

11671162
* 对象.实例方法
11681163

@@ -1195,11 +1190,11 @@ static 静态修饰的成员(方法和成员变量)属于类本身的。
11951190

11961191
内存问题:
11971192

1198-
* **栈内存存放main方法和地址**
1193+
* **栈内存存放 main 方法和地址**
11991194

12001195
* **堆内存存放对象和变量**
12011196

1202-
* **方法区存放class和静态变量(jdk8以后移入堆)**
1197+
* **方法区存放 class 和静态变量(jdk8 以后移入堆)**
12031198

12041199
访问问题:
12051200

@@ -1366,7 +1361,7 @@ class Animal{
13661361

13671362
1. 子类的构造器的第一行默认 super() 调用父类的无参数构造器,写不写都存在
13681363
2. 子类继承父类,子类就得到了父类的属性和行为。调用子类构造器初始化子类对象数据时,必须先调用父类构造器初始化继承自父类的属性和行为
1369-
3. 参考JVM -> 类加载 -> 对象创建
1364+
3. 参考 JVM → 类加载 对象创建
13701365

13711366
```java
13721367
class Animal{
@@ -1387,6 +1382,7 @@ class Animal{
13871382
```
13881383

13891384
* **为什么 Java 是单继承的?**
1385+
13901386
答:反证法,假如 Java 可以多继承,请看如下代码:
13911387

13921388
```java

0 commit comments

Comments
 (0)