1. 程式人生 > >java基礎知識複習鞏固

java基礎知識複習鞏固

記錄一些java基礎知識點:

Person p = new Person();在記憶體中做了哪些事情。
    (1)將Person.class檔案載入進記憶體中。
    (2)如果p定義在主方法中,那麼,就會在棧空間開闢一個變數空間p。
    (3)在堆記憶體給物件分配空間。
    (4)對物件中的成員進行預設初始化。
    (5)對物件中的成員進行顯示初始化。
    (6)呼叫構造程式碼塊對物件進行初始化。(如果沒有就不執行)
    (7)呼叫構造方法對物件進行初始化。物件初始化完畢。
    (8)將物件的記憶體地址賦值給p變數,讓p變數指向該物件。

static關鍵字:
    (1)靜態的意思,用來修飾成員變數和成員函式
    (2)靜態的特點:
        隨著類的載入而載入
        優先於物件存在
        對所有物件共享
        可以被類名直接呼叫
    (3)靜態的注意事項
        A:靜態方法只能訪問靜態成員
            為什麼:因為靜態的內容是隨著類的載入而載入,它是先進記憶體的。
        B:靜態方法中不能使用this,super關鍵字
        C:主方法是靜態的
            public static void main(String[] args)
            public:公共的意思,是最大許可權修飾符。
            static:由於jvm呼叫main方法的時候,沒有建立物件。
                   只能通過類名呼叫。所以,main必須用static修飾。
            void:由於main方法是被jvm呼叫,不需要返回值。用void修飾。
            main:main是主要的意思,所以jvm採用了這個名字。是程式的入口。

            String[]:字串陣列
            args:陣列名

            在執行的時候,通過java命令給args陣列賦值。
            格式:java MainTest hello world itcast
    (4)靜態變數和成員變數的區別
        A:呼叫方式
            靜態變數也稱為類變數,可以直接通過類名呼叫。也可以通過物件名呼叫。
            這個變數屬於類。
            成員變數也稱為例項變數,只能通過物件名呼叫。這個變數屬於物件。
        B:儲存位置
            靜態變數儲存在方法區長中的靜態區。
            成員變數儲存在堆記憶體。
        C:生命週期
            靜態變數隨著類的載入而存在,隨著類的消失而消失。生命週期長。
            成員變數隨著物件的建立而存在,隨著物件的消失而消失。
        D:與物件的相關性
            靜態變數是所有物件共享的資料。
            成員變數是每個物件所特有的資料。
    (5)靜態的優點和弊端
        優點:
        對物件的共享資料進行單獨空間的儲存,節省記憶體,沒有必要每個物件都儲存一份
        可直接被類名呼叫
        弊端:
        生命週期過長,隨著類的消失而消失
        訪問出現許可權,即靜態雖好但只能訪問靜態
    (6)什麼使用使用靜態呢?
        A:當所有物件共享某個資料的時候,就把這個成員變數定義為靜態修飾的。
        B:當某個方法沒有訪問該類中的非靜態成員,就可以把這個方法定義為靜態修飾。

        靜態的生命週期比較長,所以一般不推薦使用。
    (7)靜態程式碼塊
        A:它只執行一次,它比main還先執行。
        B:執行順序
            靜態程式碼塊--構造程式碼塊--構造方法

重寫和過載的區別?
            過載:在同一類中。方法名相同,引數列表不同。過載可以改變返回型別。
            重寫:在不同類中(子父類中)。
                  方法宣告相同(返回型別,方法名,引數列表均相同)。
        重寫需要注意:
            **子類方法的訪問許可權要大於等於父類方法的訪問許可權。
            **靜態只能重寫靜態。但是這種情況一般不會出現。

        構造方法
            **子類的例項化過程
                ***子類建立物件時,會先去建立父類的物件。
                    預設是去呼叫父類的無參構造方法。
                ***子類構造方法中,第一行預設是super()
                ***為什麼子類中第一行會預設有super()
                    因為他繼承父類的成員使用,使用前這些成員必須初始化,
                    而他們是父類的成員,所以,必須通過父類進行初始化。
                    所以,會先建立一個父類的物件。
            **當父類沒有無參構造方法時
                必須使用this或者super呼叫其他的構造方法。

多型:
    (1)同一個物件,在程式不同時刻的多種執行狀態。舉例:動物,狗是狗,狗是動物。水(氣態,液態,固態)
    (2)多型前提
        A:存在著繼承或者實現關係
        B:有方法的重寫
        C:父類(介面)引用指向子類(實現)物件
    (3)多型的好處和弊端:
        好處:多型的存在提高了程式的擴充套件性和後期可維護性
        弊端:雖然可以預先使用,但是隻能訪問父類中已有的功能,執行的是後期子類的功能內容。
              不能預先使用子類中定義的特有功能。
    (4)多型中物件呼叫成員的特點
        Fu f = new Zi();
        
        A:成員變數
            編譯看左邊,執行看左邊
        B:成員方法 
            編譯看左邊,執行看右邊
        C:靜態方法
            編譯看左邊,執行看左邊
    (5)多型的思想
        指揮同一批物件做事情。舉例:帶兵打仗,下課等。

throws和throw的區別
        A:有throws的時候可以沒有throw。
           有throw的時候,如果throw拋的異常是Exception體系,那麼必須有throws在方法上宣告。
        B:throws用於方法的宣告上,其後跟的是異常類名,後面可以跟多個異常類,之間用逗號隔開
           throw用於方法體中,其後跟的是一個異常物件名