1. Java 程序的內(nèi)存劃分玉锌,分為 5 大區(qū)域岸啡,分別是什么锐涯?(重點著瓶,牢記)
-
PC 寄存器(Program Counter Register):
存儲 Java 虛擬機(jī)正在執(zhí)行的字節(jié)碼指令地址 -
Java 虛擬機(jī)棧(Java Virtual Machine Stack):
存儲棧幀 -
堆(Heap):
存儲著 GC 鎖管理的各種對象 -
方法區(qū)(Method Area):
存儲每一個類的結(jié)構(gòu)信息(比如字段和方法信息、構(gòu)造方法和普通方法的字節(jié)碼等) -
本地方法棧(Native Method Stack):
用來支持 native 方法的調(diào)用(比如用 C 語言編寫的方法)
image.png
2. Java 的構(gòu)造方法怎么寫俐银?可以重載嗎链沼?
image.png
3. Java 中 this 關(guān)鍵字是什么了讨?本質(zhì)是什么内颗?如何在同一個類的一個構(gòu)造器中調(diào)用另一個構(gòu)造器钧排?
- this 是一個指向當(dāng)前對象的引用
- this 的本質(zhì)是一個隱藏的、位置最靠前的方法參數(shù)
-
this()
可以調(diào)用其他構(gòu)造器
image.png
4. 如何理解 this 的本質(zhì)是一個隱藏的均澳、位置最靠前的方法參數(shù)
這句話呢恨溜?(注意理解這個點,非常重要)
image.png
- 上面的
dog1.run()
這句代碼相當(dāng)于 方法區(qū)run(dog1)
的調(diào)用 - 上面的
Dog dog1 = new Dog(10);
這句代碼等價于 方法區(qū)中Dog dog1 = Dog(新對象的地址, 10);
因為new
會創(chuàng)建出一個堆空間地址
5. Java 在什么情況會生成默認(rèn)構(gòu)造方法找前?如果有自定義構(gòu)造方法糟袁,默認(rèn)構(gòu)造方法還在嗎?
- 如果開發(fā)者不給類聲明構(gòu)造方法躺盛,就會自動生成無參默認(rèn)構(gòu)造方法
- 如果開發(fā)者有自定義構(gòu)造方法项戴,默認(rèn)構(gòu)造方法就不會生成了
image.png
6. Java 中的包本質(zhì)是是什么?有什么作用颗品?包的命名建議是什么肯尺?(重要)
- 包的本質(zhì)就是文件夾
- 作用:① 將不同的類進(jìn)行組織管理、訪問控制 ② 解決命名空間
- 命名建議:一般用
公司名稱的全小寫字母
命名
image.png
7. 如何在一個類中使用其他包的類呢躯枢?(至少說兩種方式)
image.png
8. 為了方便则吟,Java 編譯器會為每個源文件自動導(dǎo)入哪 2 個包?import aa.bb.*;
這句代碼導(dǎo)入了哪些位置的類锄蹂?
- 自動導(dǎo)入
import java.lang.*;
和import .*;
-
import aa.bb.*;
代表導(dǎo)入 aa/bb 文件夾下的所有類氓仲,并不會遞歸導(dǎo)入子文件夾的類
image.png