1:成員變量和局部變量的區別(理解)
(1)在類中的位置不一樣
成員變量:類中方法外
局部變量:方法定義中或者方法聲明上
(2)在內存中的位置不一樣
成員變量:在堆中
局部變量:在棧中
(3)生命週期不一樣
成員變量:隨着對象的建立而存在,隨着對象的消失而消失
局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失
(4)初始化值不一樣
成員變量:有默認值
局部變量:沒有默認值,必須定義,賦值,而後才能使用
2:類做爲形式參數的問題?(理解)
(1)若是你看到一個方法須要的參數是一個類名,就應該知道這裏實際須要的是一個具體的對象。java
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()方法jvm
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)標準案例this
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)靜態的內存圖
靜態的內容在方法區的靜態區
(4)靜態的注意事項;
A:在靜態方法中沒有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 30spa