標籤:
1:成員變數和局部變數的區別(理解) (1)在類中的位置不同 成員變數:類中方法外 局部變數:方法定義中或者方法聲明上 (2)在記憶體中的位置不同 成員變數:在堆中 局部變數:在棧中 (3)生命週期不同 成員變數:隨著對象的建立而存在,隨著對象的消失而消失 局部變數:隨著方法的調用而存在,隨著方法的調用完畢而消失 (4)初始化值不同 成員變數:有預設值 局部變數:沒有預設值,必須定義,賦值,然後才能使用
注意事項: 局部變數名稱可以和成員變數名稱一樣,在方法中使用的時候,採用的是就近原則。
2:類作為形式參數的問題?(理解) (1)如果你看到一個方法需要的參數是一個類名,就應該知道這裡實際需要的是一個具體的對象。
3:匿名對象(理解) (1)沒有名字的對象 (2)應用情境 A:調用方法,僅僅只調用一次的時候。 注意:調用多次的時候,不適合。 那麼,這種匿名調用有什麼好處嗎? 有,匿名對象調用完畢就是垃圾。可以被記憶體回收行程回收。 B:匿名對象可以作為實際參數傳遞
4:封裝(理解) (1)封裝概述:指隱藏對象的屬性和實現細節,僅對外提供公用訪問方式。 (2)好處: A:隱藏實現細節,提供公用的訪問方式 B:提高代碼的複用性 C:提高代碼的安全性 (3)設計原則 把不想讓外界知道的實現細節給隱藏起來,提供公用的訪問方式 把屬性隱藏,提供公用方法對其訪問。 (4)private是封裝的一種體現。 封裝:類,方法,private修飾成員變數
5:private關鍵字(掌握) (1)私人的意義,可以修飾成員變數和成員方法 (2)特點: 被private修飾的後的成員只能在本類中被訪問 (3)private的應用: 以後再寫一個類的時候: 把所有的成員變數給private了 提供對應的getXxx()/setXxx()方法
6:this關鍵字(掌握) (1)代表當前類的引用對象 記住:哪個對象調用方法,該方法內部的this就代表那個對象 (2)this的應用情境: A:解決了局部變數隱藏成員變數的問題 B:其實this還有其他的應用,明天講解。
7:構造方法(掌握) (1)作用:用於對對象的資料進行初始化 (2)格式: A:方法名和類名相同 B:沒有傳回值類型,連void都不能有 C:沒有傳回值
思考題:構造方法中可不可以有return語句呢?
可以。而是我們寫成這個樣子就OK了:return;
其實,在任何的void類型的方法的最後你都可以寫上:return; (3)構造方法的注意事項 A:如果我們沒寫構造方法,系統將提供一個預設的無參構造方法 B:如果我們給出了構造方法,系統將不再提供預設構造方法 如果這個時候,我們要使用無參構造方法,就必須自己給出。 推薦:永遠手動自己給出無參構造方法。 (4)給成員變數賦值的方式 A:setXxx() B:帶參構造方法 (5)標準案例 class Student { private String name; private int age; public Student(){} public Student(String name,int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 測試: class StudentDemo { public static void main(String[] args) { //方式1 Student s1 = new Student(); s1.setName("林青霞"); s1.setAge(27); System.out.println(s1.getName()+"---"+s1.getAge()); //方式2 Student s2 = new Student("劉意",30); System.out.println(s2.getName()+"---"+s2.getAge()); } }
8:代碼:Student s = new Student();做了哪些事情?(理解) (1)把Student.class檔案載入到記憶體 (2)在棧記憶體為s開闢空間 (3)在堆記憶體為學生對象申請空間 (4)給學生的成員變數進行預設初始化。null,0 (5)給學生的成員變數進行顯示初始化。林青霞,27 (6)通過構造方法給成員變數進行初始化。劉意,30 (7)物件建構完畢,把地址賦值給s變數
9:物件導向的練習題(掌握) (1)標準的手機類的定義和測試 (2)Demo類有求和方法,Test類進行測試。 什麼時候定義成員變數? 當該變數是用來描述一個類的時候。 (3)長方形案例 (4)員工案例 (5)MyMath案例(自己提供加減乘除並測試)
10:static關鍵字(理解) (1)靜態意思。可以修飾成員變數和成員方法。 (2)靜態特點: A:隨著類的載入而載入 B:優先與對象存在 C:被類的所有對象共用 這其實也是我們判斷該不該使用靜態依據。 舉例:飲水機和水杯的問題思考 D:可以通過類名調用 既可以通過對象名調用,也可以通過類名調用,建議通過類名調用。 (3)靜態記憶體配置圖s 靜態內容在方法區的靜態區 (4)靜態注意事項; A:在靜態方法中沒有this對象 B:靜態只能訪問靜態(代碼測試過) A:在靜態方法中是沒有this關鍵字的 如何理解呢?
靜態是隨著類的載入而載入,this是隨著對象的建立而存在。
靜態比對象先存在。 B:靜態方法只能訪問靜態成員變數和靜態成員方法 靜態方法: 成員變數:只能訪問靜態變數 成員方法:只能訪問靜態成員方法 非靜態方法: 成員變數:可以是靜態,也可以是非靜態 成員方法:可是是靜態成員方法,也可以是非靜態成員方法。 簡單記: 靜態只能訪問靜態。
(5)靜態變數和成員變數的區別 A:所屬不同 靜態變數:屬於類,類變數 成員變數:屬於對象,物件變數,執行個體變數 B:記憶體位置不同 靜態變數:方法區的靜態區 成員變數:堆記憶體 C:生命週期不同 靜態變數:靜態變數是隨著類的載入而載入,隨著類的消失而消失 成員變數:成員變數是隨著對象的建立而存在,隨著對象的消失而消失 D:調用不同 靜態變數:可以通過對象名調用,也可以通過類名調用 成員變數:只能通過對象名調用 (6)main方法是靜態 public:許可權最大 static:不用建立對象調用 void:傳回值給jvm沒有意義 main:就是一個常見的名稱。 String[] args:可以接收資料,提供者的靈活性 格式:java MainDemo hello world java java MainDemo 10 20 30
Java基礎班學習筆記(7)