07.01_面向對象(構造方法Constructor概述和格式)(掌握)
- A:構造方法概述和作用
- 給對象的數據(屬性)進行初始化
- B:構造方法格式特點
- a:方法名與類名相同(大小也要與類名一致)
- b:沒有返回值類型,連void都沒有
- c:沒有具體的返回值return;
07.02_面向對象(構造方法的重載及注意事項)(掌握)
- A:案例演示
- 構造方法的重載
- 重載:方法名相同,與返回值類型無關(構造方法沒有返回值),只看參數列表
- B:構造方法注意事項
- a:如果我們沒有給出構造方法,系統將自動提供一個無參構造方法。
- b:如果我們給出了構造方法,系統將不再提供默認的無參構造方法。
- 注意:這個時候,如果我們還想使用無參構造方法,就必須自己給出。建議永遠自己給出無參構造方法
07.03_面向對象(給成員變量賦值的兩種方式的區別)
- A:setXxx()方法
- 修改屬性值
- B:構造方法
- 給對象中屬性進行初始化
07.06_面向對象(創建一個對象的步驟)(掌握)
- A:畫圖演示
- 畫圖說明一個對象的創建過程做了哪些事情?
- Student s = new Student();
- 1,Student.class加載進內存(方法區)
- 2,聲明一個Student類型引用s
- 3,在堆內存創建對象,
- 4,給對象中屬性默認初始化值
- 5,屬性進行顯示初始化
- 6,構造方法進棧,對對象中的屬性賦值,構造方法彈棧
- 7,將對象的地址值賦值給s
創建對象的步驟.png
07.09_面向對象(static關鍵字及內存圖)(了解)
-
方法區里面,每個字節碼對象,有靜態區和非靜態區
靜態內存圖.png
07.10_面向對象(static關鍵字的特點)(掌握)
- A:static關鍵字的特點
- a:隨著類的加載而加載
- b:優先于對象存在(字節碼加載到方法區已經存在和初始化)
- c:被類的所有對象共享
- 舉例:咱們班級的學生應該共用同一個班級編號。
- 其實這個特點也是在告訴我們什么時候使用靜態?
- 如果某個成員變量是被所有對象共享的,那么它就應該定義為靜態的。
- 舉例:
- 飲水機(全班學生使用同一個飲水機,用靜態修飾)
- 水杯(不能用靜態修飾)
- 共性用靜態,特性用非靜態
- d:可以通過類名調用
- 其實它本身也可以通過對象名調用。
- 推薦使用類名調用。
- 靜態修飾的內容一般我們稱其為:與類相關的,類成員
07.11_面向對象(static的注意事項)(掌握)
- A:static的注意事項
- a:在靜態方法中是沒有this關鍵字的
- 如何理解呢?
- 靜態是隨著類的加載而加載,this是隨著對象的創建而存在。
- 靜態比對象先存在。
- 如何理解呢?
- b:靜態方法只能訪問靜態的成員變量和靜態的成員方法
- 靜態方法:
- 成員變量:只能訪問靜態變量
- 成員方法:只能訪問靜態成員方法
- 非靜態方法:
- 成員變量:可以是靜態的,也可以是非靜態的
- 成員方法:可是是靜態的成員方法,也可以是非靜態的成員方法。
- 簡單記:
- 靜態只能訪問靜態。
- 靜態方法:
- a:在靜態方法中是沒有this關鍵字的
07.12_面向對象(靜態變量和成員變量的區別)(掌握)
- 靜態變量也叫類變量 成員變量也叫對象變量
- A:所屬不同
- 靜態變量屬于類,所以也稱為為類變量
- 成員變量屬于對象,所以也稱為實例變量(對象變量)
- B:內存中位置不同
- 靜態變量存儲于方法區的靜態區
- 成員變量存儲于堆內存
- C:內存出現時間不同
- 靜態變量隨著類的加載而加載,隨著類的消失而消失
- 成員變量隨著對象的創建而存在,隨著對象的消失而消失
- D:調用不同
- 靜態變量可以通過類名調用,也可以通過對象調用
- 成員變量只能通過對 象名調用
07.13_面向對象(main方法的格式詳細解釋)(了解)
- A:格式
- public static void main(String[] args) {}
- B:針對格式的解釋
- public 被jvm調用,訪問權限足夠大。
- static 被jvm調用,不用創建對象,直接類名訪問
- void被jvm調用,不需要給jvm返回值
- main 一個通用的名稱,雖然不是關鍵字,但是被jvm識別
- String[] args 以前用于接收鍵盤錄入的
07.14_面向對象(工具類中使用靜態)(了解)
- A:制作一個工具類
- ArrayTool
- 1,獲取最大值
- 2,數組的遍歷
- 3,數組的反轉
//如果一個類中所有的方法都是靜態的,那么需要多做一步:私有構造方法
private className() {}
07.15_面向對象(說明書的制作過程)(了解)
- A:對工具類加入文檔注釋
- B:通過javadoc命令生成說明書
- @author(提取作者內容)
- @version(提取版本內容)
- javadoc -d 指定的文件目錄 -author -version ArrayTool.java
- @param 參數名稱//形式參數的變量名稱@return 函數運行完返回的數據
- eclipse導出項目文檔:File-->Export-->Java-->Javadoc 選擇需要導出的項目和類 即可
/**
* 返回數組元素最大值
* @param arr 數組,必須是int數組
* @return 數組里面的最大值
*/
/**
* 數組工具類
* @author 小侯爺
* @version 1.0
*/
07.16_面向對象(如何使用JDK提供的幫助文檔)(了解)
- A:找到文檔,打開文檔
- B:點擊顯示,找到索引,出現輸入框
- C:你應該知道你找誰?舉例:Scanner
- D:看這個類的結構(需不需要導包)
- 成員變量 字段
- 構造方法 構造方法
- 成員方法 方法
07.17_面向對象(學習Math類的隨機數功能)(了解)
- 打開JDK提供的幫助文檔學習
- A:Math類概述
- 類包含用于執行基本數學運算的方法
- B:Math類特點
- 由于Math類在java.lang包下,所以不需要導包。
- 因為它的成員全部是靜態的,所以私有了構造方法
- C:獲取隨機數的方法
- public static double random():返回帶正號的 double 值,該值大于等于 0.0 且小于 1.0。
- D:我要獲取一個1-100之間的隨機數,腫么辦?
// 獲得 1-100 之間的隨機數 (包含1、100)
int number = (int)(Math.random()*100)+1;
07.18_面向對象(猜數字小游戲案例)(了解)
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數,范圍在1-100之間:");
int number = (int)(Math.random()*100 + 1);
while (true) {
int res = sc.nextInt() ;
if (res > number) {
System.out.println("猜的大了");
} else if ( res < number) {
System.out.println("猜的小了");
} else {
System.out.println("猜對了,good!");
break ;
}
}
sc.close();
END。
我是小侯爺。
在魔都艱苦奮斗,白天是上班族,晚上是知識服務工作者。
如果讀完覺得有收獲的話,記得關注和點贊哦。
非要打賞的話,我也是不會拒絕的。