java基礎篇二


引言

滴,第二天卡。

五、關鍵字


     -static
         -初始化順序
             -靜態變量和靜態語句塊優先於實例變量和普通語句塊,靜態變量和靜態語句塊的初始化順序取決於它們在代碼中的順序。
             -存在繼承的情況下,初始化順序為:
                 父類(靜態變量、靜態語句塊)
                 子類(靜態變量、靜態語句塊)
                 父類(實例變量、普通語句塊)
                 父類(構造函數)
                 子類(實例變量、普通語句塊)
                 子類(構造函數)
         -靜態變量    private static int y;
             -又稱為類變量,也就是說這個變量屬於類的,類所有的實例都共享靜態變量,可以直接通過類名來訪它;靜態變量在內存中

                只存在一份。
         -靜態方法    public static void func1(){}
             -靜態方法在類加載的時候就存在了,它不依賴於任何實例。所以靜態方法必須有實現,也就是說它不能是抽象方法
             -只能訪問所屬類的靜態字段和靜態方法,方法中不能有 this 和 super 關鍵字。
         -靜態語句塊    static {System.out.println("123");}
             -靜態語句塊在類初始化時運行一次。
         -靜態內部類    static class StaticInnerClass {}
             -非靜態內部類依賴於外部類的實例,而靜態內部類不需要。
             -靜態內部類不能訪問外部類的非靜態的變量和方法。
         -靜態導包    import static com.xxx.ClassName.*
             -在使用靜態變量和方法時不用再指明 ClassName,從而簡化代碼,但可讀性大大降低
     -final   
         -聲明字段   
             -對於基本類型,final 使數值不變
                 final int x = 1;
                 //x=0; 這里會報錯:cannot assign value to final variable 'x'
             -對於引用類型,final 使引用不變,也就不能引用其它對象,但是被引用的對象本身是可以修改的。
                 final A y = new A();
                 y.a = 1;
         -聲明方法
             -聲明方法不能被子類重寫。
             -private 方法隱式地被指定為 final,如果在子類中定義的方法和基類中的一個 private 方法簽名相同,此時子類的

              方法不是重寫基類方法,而是在子類中定義了一個新的方法。
         -聲明類
             -聲明類不允許被繼承。
            

六、Object 常見的方法


     -主要方法
         -public boolean equals(Object obj)
         -public native int hashCode()
         -public String toString()
         -protected native Object clone() throws CloneNotSupportedException
         -native關鍵字:
             -一個native方法就是一個Java調用非Java代碼的接口。一個native方法是指該方法的實現由非Java語言實現,比如用

              C或C++實現。
             -在定義一個native方法時,並不提供實現體(比較像定義一個Java Interface),因為其實現體是由非Java語言在外

               面實現的。
     -equals()
         -與null的比較
             -對任何不是 null 的對象 x 調用 x.equals(null) 結果都為 false
              x.equals(null); // false;
         -equals()和null區分
             -對於基本類型,== 判斷兩個值是否相等,基本類型沒有 equals() 方法。
             -對於引用類型,== 判斷兩個變量是否引用同一個對象,而 equals() 判斷引用的對象是否等價
     -hashCode()
         -主要作用是為了配合基於散列的集合一起正常運行,這樣的散列集合包括HashSet、HashMap以及HashTable
         -在覆蓋 equals() 方法時應當總是覆蓋 hashCode() 方法,保證等價的兩個對象散列值也相等。
         -hashCode() 返回散列值,而 equals() 是用來判斷兩個對象是否等價。等價的兩個對象散列值一定相同,但是散列值相同

          的兩個對象不一定等價。
     -toString()
         -將當前變量的數據類型轉換為String類型,同時也方便打印輸出
     -clone()
         -官方解釋
             -返回一個要克隆對象的副本,克隆的類型依賴被克隆對象
         -誤區
             -clone() 方法並不是 Cloneable 接口的方法,而是 Object 的一個 protected 方法。Cloneable 接口只是規定了這個方法。
         -在使用clone()時需注意,需要拋出異常,和強制類型轉換
         -cloneable()
             -在需要clone的對象上實現(implements)Cloneable接口,然后再在類中加上clone方法,在方法中只需要調用

                super.clone(),即可根據自己的需要實現
         -淺拷貝   
             -拷貝對象和原始對象的引用類型引用同一個對象
         -深拷貝
             -拷貝對象和原始對象的引用類型引用不同對象。

七、異常


     -檢查性異常: 不處理編譯不能通過
       非檢查性異常:不處理編譯可以通過,如果有拋出直接拋到控制台
       運行時異常: 就是非檢查性異常
       非運行時異常: 就是檢查性異常
     -Throwable 可以用來表示任何可以作為異常拋出的類,分為兩種: Error 和 Exception。
     -Error
         -是指程序無法處理的錯誤,表示應用程序運行時出現的重大錯誤。例如jvm運行時出現的OutOfMemoryError以及

           Socket編程時出現的端口占用等程序無法處理的錯誤。
     -Exception
         -分為運行時異常跟編譯異常
         -運行時異常
             -即RuntimeException及其之類的異常。這類異常在代碼編寫的時候不會被編譯器所檢測出來,是可以不需要被捕獲

              ,但是程序員也可以根據需要進行捕獲拋出。
              常見的RUNtimeException有:NullpointException(空指針異常),ClassCastException(類型轉換異常),

              IndexOutOfBoundsException(數組越界異常)等。
         -編譯異常
             -RuntimeException以外的異常。這類異常在編譯時編譯器會提示需要捕獲,如果不進行捕獲則編譯錯誤。常見編譯

              異常有:IOException(流傳輸異常),   SQLException(數據庫操作異常)等。

 

     java異常類關系圖
     -java處理異常的機制:
         -拋出異常以及捕獲異常(try---catch或try --- catch --- finally 代碼塊),一個方法所能捕捉的異常,一定是Java代碼

          在某處所拋出的異常。簡單地說,異常總是先被拋出,后被捕捉的。
     -throw跟throws的區別:
         -throws是方法可能拋出異常的聲明,throw是語句拋出一個異常(可以是自定義需繼承Exception,也可以是java自己給

           出的異常類)
         -throws表示出現異常的一種可能性,並不一定會發生這些異常;throw則是拋出了異常,執行throw則一定拋出了某種異常。

八、java各版本特性


     -java5
         -很重要的一個版本,有泛型、枚舉、自動裝箱/拆箱、可變參數、注解、foreach循環、靜態導入、新的線程模型等等更新。
     -java6
         -雞肋的版本,有JDBC4.0更新、Complier API、WebSevice支持的加強等更新。
     -java7
         -有一些比較重要的更新,如異常處理增加了被抑制的異常、捕獲多異常、try-with-resource自動釋放資源等,還有應用了

         G1垃圾回收器、switch可以使用String類型、泛型自動判斷類型、fork/join框架把任務細分並使用多處理器處理、支持二

         進制字面量等
     -java8
         -很多的新特性,比如編譯器、類庫、開發工具和JVM(Java虛擬機)。
         -最重要的一點,Java8開始支持了Lambda表達式
     -java9
         -Java 平台級模塊系統、Linking、Shell : 交互式 Java REPL、改進的 Javadoc等
     -詳細特性介紹:java各版本特性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM