java基礎篇二

來源:互聯網
上載者:User
引言

滴,第二天卡。

五、關鍵字


     -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(null 指標異常),ClassCastException(類型轉換異常),

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

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

 

    
     -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各版本特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.