一. class類
1. class class物件描述了執行中的classes和inte***ces。通過class物件可以取得執行中的classes和inte***ces的相關資訊。
2. 每個class都有乙個相應的class物件。每個class的class物件儲存於編譯後的class所在的檔案中。所以,當jvm裝載乙個.class檔案時就會裝載乙個class物件。所以,乙個class只有乙個class物件。
二. class類的基本應用
1. 如何獲取乙個class的class物件
1.1 通過class.forname(classname)方法,該方法接收乙個string引數,用以指定要生成哪個class的class物件.,如class.forname(「dog」)。
1.2 通過類字面常量(class literals)來獲得。
1) 字面常量的形式為:classname.class。如dog.class。
2) 對於基本類開,每種基本型別的外覆類都有乙個名為type的標準資料,能夠產生乙個指向相應的基本型別的class物件的reference。如int.class等同於integer.type。
1.3 通過object.getclass()方法來獲得,如
dog dog =newdog();
dog.getclass();
1.4 乙個產生class物件的例子
classcat
static
}classdog
static
}classduck
static
}publicclasstest
catch(classnotfoundexception
cnfe)
system
.out.println("after class.forname(\"dog\")");
duck d =newduck();
system
.out.println("after create duck()");
class
c3 = d.getclass();
system
.out.println("after class.forname(\"duck\")");
} }
執行結果為:
in main()
loading cat
init cat()
after create cat()
loading dog
after class.forname("dog")
loading duck
init duck()
after create duck()
after class.forname("duck")
**(1)(2)產生了class dog的class物件,但並沒有產生class dog物件。
**:產生乙個class的class物件不會導致產生乙個class物件
2. 用classc物件進行型別比較
2.1. 直接比較
兩個class物件不論是通過equals()函式還是直接用==運算子進行比較,比較的都是型別是否相同。
2.2. 通過class.isinstance(object)函式進行比較,如
classcat{}
classdog{}
classduck{}
publicclasstest
} 執行結果為:
c2.isintance(d):false
c3.isintance(d):true
2.3. 通過instanceof關鍵字進行比較。但是兩個處於不同的繼承體系中的類物件和class物件進行比較,會產生編譯錯誤。
classcat{}
classdog{}
classduck{}
publicclasstest
} 由於duck和dog處於兩個不同的繼承體系中,所以**(3)會發生編譯錯誤。如果把**(2)注釋掉,並去掉**(1)的注釋,編譯將通過。這是因為所有class都是繼承自object的,所以object與dog處於同乙個繼承體系中,可以進行比較。
2.4. 綜合例項
classbase{}
classderived{}
publicclasstest
publicstaticvoidmain(string
args)
} 執行結果為:
testing x of type class base
x instanceof base true
x instanceof derived false
base.isinstance(x) true
derived.isinstance(x) false
x.getclass() == base.class true
x.getclass() == derived.class false
x.getclass().equals(base.class) true
x.getclass().equals(derived.class) false
testing x of type class derived
x instanceof base false
x instanceof derived true
base.isinstance(x) false
derived.isinstance(x) true
x.getclass() == base.class false
x.getclass() == derived.class true
x.getclass().equals(base.class) false
x.getclass().equals(derived.class) true
認識shell及其變數
shell本身是一種用c語言編寫的程式,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。shell分類 linux的shell種類眾多,常見的有 bourne shell usr bin sh或 bin sh bo...
認識 URL 及其編碼
參考文獻 url 由網際網路工程任務組織 ietf uri 工作小組制定並成為乙個網際網路標準,收錄於 rfc1738。正如有許多不同的獲取資源的方法一樣,描述這些資源的位置也有多種方案。不同的協議有不同的 url 語法,但是 url 的通用語法為其他協議建立新的方案提供了框架。一般而言,url 的...
HTML標籤及其屬性認識
1.掌握html文件結構 2.掌握html標籤及其屬性的寫法。3.掌握常用標籤的使用 1.建議讀者每完成一部分的 都要用瀏覽器檢視效果,在過程中感受html標記的神奇。2.製作專案時認真體會頁面的布局 不同html標記的語義及屬性。3.編輯 過程中,出現問題不要擔心,可以檢查是否有錯誤字元 標點符號...