內部類
1.成員內部類
2.靜態內部類
3.區域內部類
4.匿名內部類
○內部類:在一個類的內部再定義一個完整的類,
class Outer{
class Inner{
}
}
○特點: 編譯之后可生成個獨立的位元組碼檔案,
○內部類可直接訪問外部類的私有成員,而不破壞封裝,
○可為外部類提供必要的內部功能組件,
成員內部類
○在類的內部定義,與實體變數、實體方法同級別的類,
○外部類的一個實體部分,創建內部類物件時,必須依賴外部類物件,
Outer out=new Outer();
Inner in = out.new Inner();
○當外部類、內部類存在重名屬性時,會優先訪問內部類屬性,
○成員內部類不能定義靜態成員,
靜態內部類
○不依賴外部類物件,可直接創建或通過類名訪問,可宣告靜態成員,
○只能直接訪問外部類的靜態成員(實體成員需實體化外部類物件)
Outer.Inner inner =new Outer.Inner();
Outer.Inner.show();
區域內部類
○定義在外部類的方法中,作用范圍和創建物件范圍僅限于當前方法,
○區域內部類訪問外部類當前方法中的區域變數時,因無法保障變數的生命周期與自身相同,變數必須修飾為final,
○限制類的使用范圍,
匿名內部類
○沒有類名的區域內部類(一切特征都與區域內部類相同),
○必須繼承一個父類或者實作一個介面,
○定義類、實作類、創建物件的語法合并,只能創建一個該類的物件,
○優點:減少代碼量
○缺點:可讀性較差
知識點:內部類的分類
內部類:成員內部類,靜態內部類,區域內部類,匿名內部類
Object類
○超類、基類,所有類的直接或間接父類,位于繼承樹的最頂層,
○任何類,如果沒有書寫extends顯示繼承某個類,都默認直接繼承Object類,否則為間接繼承,
○Object類中所定義的方法,是所有物件都具備的方法,
○Object型別可以存盤任何物件,
○作為引數,可接受任何物件,
○作為回傳值,可回傳任何物件,
getClass()方法
○public final Class<?>getClass(){}
○回傳參考中存盤的實際物件型別,
○應用:通常用于判斷兩個參考中實際存盤物件型別是否一致,
hashCode()方法
public int hashCode(){}
○回傳該物件的哈希碼值,
○哈希值根據物件的地址或字串或數字使用hash演算法計算出來的int型別的數值,
○一般情況下相同物件回傳相同哈希碼
toString()方法
public String toString(){}
○回傳該物件的字串表示(表示形式),
○可以根據程式需求覆寫該方法,如:展示物件各個屬性值,
equals()方法
public boolean equals(Object obj){}
○默認實作為(this == obj),比較兩個物件地址是否相同,
○可進行覆寫,比較兩個物件的內容是否相同,
equals()方法覆寫步驟
○比較兩個參考是否指向同一個物件,
○判斷obj是否為null,
○判斷兩個參考指向的實際物件型別是否一致,
○強制型別轉換,
○依次比較各個屬性值是否相同,
finalize()方法
○當物件判定為垃圾物件時,由JVM自動呼叫此方法,用標記垃圾物件,進入回收佇列,
○垃圾物件:沒有有效參考指向此物件時,為垃圾物件,
○垃圾回收:由Gc銷毀垃圾物件,釋放資料存盤空間,
○自動回識訓制:JVM的記憶體耗盡,一次性回收所有垃圾物件,
○手動回識訓制:使用System.gc();通知JVM執行垃圾回收,
包裝類
什么是包裝類?
○基本資料型別所對應的參考資料型別,
○Object可統一所有資料,包裝類的默認值是null,
包裝類對應
//基本資料型別 //包裝型別
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
型別轉換與裝箱、拆箱
○8種包裝類提供不同型別間的轉換方式:
○Number父類中提供的6個共性方法,
○parseXXX()靜態方法,
○valueOf()靜態方法,
○ 注意:需保證型別兼容,否則拋出NumberFormatException例外,
整數緩沖區
○Java預先創建了256個常用的整數包裝型別物件,
○在實際應用中,對已創建的物件進行復用,
String
○字串是常量,創建之后不可改變,
○字串字面值存盤在字串池中,可以共享,
○String s=“Hello”; 產生一個物件,字串池中存盤,
○String s=new String(“Hello”); //產生兩個物件,堆、池各存盤一個,
常用方法
public int length(); //回傳字串的長度
public char charAt(int index); //根據下標獲取字符
public boolean contains(String str);//判斷當前字串中是否包含str
public char[] toCharArray(); //將字串轉換成陣列
public int indexOf(String str); //查找str首次出現的下標,存在,則回傳該下標:不存在,則回傳-1
public int lastIndexOf(String str); //查找字串在當前字串中最后一次出現的下標索引
public String trim();//去掉字串最后的空格
public String toUpperCase();//將小寫轉成大寫
public boolean endWith(String str);//判斷字串是否以str結尾
public String replace(char oldChar,char new Char);//將舊字串替換成新字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273711.html
標籤:java
