1. 程式人生 > >java第七天---面向物件、構造方法、static關鍵字、靜態變數與成員變數的區別

java第七天---面向物件、構造方法、static關鍵字、靜態變數與成員變數的區別

1 構造方法

       1 構造方法的作用

建立物件,給物件中的成員進行初始化

       2  構造方法的格式特點

 a:方法名與類名相同
 b:沒有返回值型別,連void都沒有
 c:沒有具體的返回值

例如:

3 構造方法注意事項

a:如果我們沒有給出構造方法,系統將自動提供一個無參構造方法。

 b:如果我們給出了構造方法,系統將不再提供預設的無參構造方法。
          注意:這個時候,如果我們還想使用無參構造方法,就必須自己給出。建議永遠自己給出無參構造方法

2 給成員變數賦值的兩種方式

         a:setXxx()方法
         b:構造方法

 

3 建立一個物件的過程

Student  s= new Student();

        (1):載入Student.class檔案進記憶體
        (2):在棧記憶體為s開闢空間
        (3):在堆記憶體為學生物件開闢空間
        (4):對學生物件的成員變數進行預設初始化    // 一開始的預設化,null,0


        (5):對學生物件的成員變數進行顯示初始化    //如果類有給成員變數賦初值,這時進行初始化
        (6):通過構造方法對學生物件的成員變數賦值  //這時通過物件的構造方法對成員變數進行賦值
        (7):學生物件初始化完畢,把物件地址賦值給s變數

 

4 static關鍵字

A:static關鍵字的特點

 a:隨著類的載入而載入(.class檔案只要被載入進記憶體,被靜態所修飾的東西就要被載入

)          b:優先於物件存在           c:被類的所有物件共享            d:可以通過類名呼叫(也可以通過物件呼叫, 推薦類名呼叫)

 

5 static的注意事項

a:在靜態方法中是沒有this關鍵字的
            如何理解呢?
                靜態是隨著類的載入而載入,this是隨著物件的建立而存在。
                靜態比物件先存在。

 b:靜態方法只能訪問靜態的成員變數和靜態的成員方法
        簡單記:靜態只能訪問靜態,非靜態可以訪問靜態的也可以訪問非靜態的

典型例題

 

6 靜態變數與成員變數的區別

    A:所屬不同
        靜態變數屬於類,所以也稱為類變數
        成員變數屬於物件,所以也稱為例項變數(物件變數)
    B:記憶體中位置不同
        靜態變數儲存於方法區的靜態區
        成員變數儲存於堆記憶體
    C:記憶體出現時間不同
        靜態變數隨著類的載入而載入,隨著類的消失而消失
        成員變數隨著物件的建立而存在,隨著物件的消失而消失
    D:呼叫不同
        靜態變數可以通過類名呼叫,也可以通過物件呼叫
        成員變數只能通過物件名呼叫