java中的根類Object
java中所有的類的父類或直接或間接的或隱含的都是Object類。
java不允許迴圈繼承,也就是互相繼承是不可以的。
Object類中的finalize()一個對象被垃圾收集的時候,最後會由JVM調用這個對象的finalize方法
Object類中有一個String toString()方法,返回該對象的字串表示。Object類中的toString()方法他返回的是類名加上他的地址的一個字串。在子類中推薦覆蓋toString()方法。
Object類中的boolean equals(Objecto)方法是用來比較對象的內容是否相等,其傳回值是boolean類型的值,相同為真,不同則為假。實際上還是比較對象地址是否相同。String類覆蓋了equals()方法,他比較是對象中的內容是否相同。子類中也推薦覆蓋Object類中繼承的equals()方法
equals()的覆蓋原則:
自反性:x.equals(x) 為true
對稱性:y.equals(x) 和 x.equals(y) 的值要相同,要麼都為true,要麼都為false。
傳遞性:x.equals(y)為true, y.equals(z)也為true ,那麼x.equals(z)一定也為true。
覆蓋equals()方法的步驟:
boolean equals(Object o){
if(this==o) return true; //1,看看是不是一個對象
if(o==null) return true; //2,看看對象是不是空
if(!(o instanceof 本類類名)) return false; //看看是不是本類對象
...... //根據本類設計。
}
封裝類
java為每一個單一資料型別提供了一個封裝類,使每個單一資料型別可以被Object來裝載。
除了int(Integer)和char(Character),其餘類型首字母大寫即成封裝類類型名。
轉換字元的方式:
int I=10;
String s=I+” ”;
String s1=String.valueOf(i);
Int I=10;
Interger I_class=new integer(I);
封裝類、字串、基本類型間的轉換
Interger--------------------(Double(x.toString))------------>Double
String -----------------(Integer.valueOf() )---------------->Integer
Integer-----------------(x.toString() )--------------------->String
int----------------------(100+””)------------------------->String
String------------------(Integer.parseInt() )--------------->int
Integer-----------------(Integer.intValue() )--------------->int
學會查看javadoc的協助文檔。要先關注要使用方法的傳回值類型,也就是要獲得內容的類型,然後看方法名,JDK中的方法名基本上是見名知義,參數表,就是看需要什麼才可以獲得的需要的那些內容,也要看自己能夠提供什麼。
注意:“==”在任何時候都是比較地址,這種比較永遠不會被覆蓋。
程式員自己編寫的類和JDK類是一種合作關係。(因為多態的存在,可能存在我們調用JDK類的情況,也可能存在JDK自動調用我們的類的情況。)
注意:類型轉換中double\Interger\String之間的轉換最多。
(註:所有使用內部類的地方都可以不用內部類,但使用內部類可以使程式更加的簡潔,便於命名規範和劃分階層)。
內部類是指在一個外部類的內部再定義一個類。
*內部類可為靜態,可用protected和private修飾。(而外部類不可以:頂級類只能使用public和default)。