1. 程式人生 > >JavaSE復習(一)繼承多態與常用API

JavaSE復習(一)繼承多態與常用API

運行 指向 默認 開始 表達 java 存在 parse 其中

繼承與多態

  1. 在父子類的繼承關系當中,如果成員變量重名,則創建子類對象時,訪問有兩種方式:
    • 直接通過子類對象訪問成員變量:等號左邊是誰,就優先用誰,沒有則向上找
    • 間接通過成員方法訪問成員變量:該方法屬於誰,就優先用誰,沒有則向上找
  2. 從Java 8 開始,接口裏允許定義默認方法
    • 格式

        public default 返回值類型 方法名稱(參數列表){
            方法體
        }
    • 備註:接口當中的默認方法,可以解決接口升級的問題

    從Java 9 開始,接口中允許定義私有方法

  3. 多態的代碼中,成員變量和成員方法的訪問規則
    • 成員變量:編譯看左邊,運行還看左邊
    • 成員方法:編譯看左邊,運行看右邊
  4. 多態

    體現多態性:父類引用指向子類對象

    好處:無論右邊new的時候換成哪個子類對象,等號左邊調用方法都不會變化

  5. 內部類

    • 成員內部類

      內用外,隨意訪問;外用內,需要內部類對象

      使用方式:

      1. 間接方式:在外部類的方式當中,使用內部類;然後調用外部類的方法
      2. 直接方式,公式:

        【外部類名稱.內部類名稱 對象名 = new 外部類名稱().new 內部類名稱();】

    • 局部內部類(包含匿名內部類)

      要訪問所在方法的局部變量,那麽這個局部變量必須是【有效final】的。

      從Java 8 開始,只要局部變量事實不變,那麽final關鍵字可以省略

    • 權限修飾符規則:
      1. 外部類:public、(default)
      2. 成員內部類:public、protected、(default)、private
      3. 局部內部類:什麽都不寫

常用API

String

  1. String和int相互轉換

    1. int--->String

      • num + "" 低效
      • String.valueOf(num)
      • Integer.toString(num)
    2. String--->int

      • Integer.parseInt(str)
      • Integer.valueOf(str).intValue()
  2. 雙引號直接寫的字符串在常量池當中,new出來的不在池中
  3. 常量.equals字符串時建議把常量放前面,避免因字符串為空導致的空指針異常
  4. 分割字符串的split()方法的參數是一個正則表達式,以"."分割是要寫成" \\. "
  5. 輸出一維數組:Arrays.toString(arr)

    輸出二維數組:Arrays.deepToString(str)

  6. String 為什麽是 final 的

    1. 實現字符串池:不可變才能實現字符串池,如果字符串是可變的,那麽一個引用操作改變了對象的值,對其他引用會有印象

    2. 安全性:這些核心類的內部方法的實現並不是Java本身編寫的,好多都是調用的操作系統本地的API,如果String可以被繼承重寫,就有可能被惡意的重寫其中的方法,造成安全隱患;同時因為不可變,使得String是多線程安全的

    3. 效率:如果已經存在這個字符串常量便不會再創建,直接拿來用

JavaSE復習(一)繼承多態與常用API