String 字符串類(lèi)
System 可得到系統信息
StringBuilder 字符串工具類(lèi)
Thread 線(xiàn)程類(lèi)
Math 與數學(xué)有關(guān)的工具類(lèi)
ArrayList 底層用數組實(shí)現的集合
LinkedList 底層用鏈表實(shí)現的集合
HashMap 接口Map的一個(gè)實(shí)現類(lèi)
HashSet 接口Set的一個(gè)實(shí)現類(lèi)
Scanner 簡(jiǎn)單文本掃描器
Calendar 日期類(lèi)
Date 日期類(lèi)
File 目錄或文件操作類(lèi)
FileInputStream 輸入流
FileOutputStream 輸出流
PrintWriter
BufferedInputStream 具有緩沖的輸入流
BufferedOutputStream 具有緩沖的輸出流
BufferedReader 從字符輸入流中讀取文本,緩沖各個(gè)字符,
BufferedWriter 將文本寫(xiě)入字符輸出流,緩沖各個(gè)字符
我們使用關(guān)鍵字class來(lái)聲明一個(gè)類(lèi)。
通常定義class的形式如下所示:class classname { type instance-varable1; type instance-varable2; //。
type instance-varableN; type metbodname1(parameter-list) { //body of method } type metbodname2(parameter-list) { //body of method } //。
type metbodnameN(parameter-list) { //body of method }} 在一個(gè)class中定義的數據或叫變量叫做實(shí)例變量。代碼包含在方法中。
總體來(lái)說(shuō),類(lèi)中定義的方法和變量叫做該類(lèi)的成員。在大部分類(lèi)中,實(shí)例變量由該類(lèi)所定義的方法調用和訪(fǎng)問(wèn)。
因此,這就決定了類(lèi)中的數據如何被使用。所有的方法都在類(lèi)中聲明,并且通常都具有如下形式: type name(parameter-list) { //body of method } 在這里,type指定了由方法返回的數據類(lèi)型。
它可以是任意有效的類(lèi)型,包括你創(chuàng )建的類(lèi)類(lèi)型。 如果方法沒(méi)有返回值,則其返回類(lèi)型必須是void。
方法的名字由name指定。這個(gè)名字可以是除了那些在當前作用域中已經(jīng)使用的標識符之外的任意合法標識符。
parameter-list是類(lèi)型、標識符對組成的序列,每對之間用逗號分開(kāi)。參數實(shí)際上是方法被調用時(shí)接收傳遞過(guò)來(lái)的參數值的變量。
如果方法沒(méi)有參數,則參數表就是空的。除了返回void方法外,那些具有返回類(lèi)型的方法使用下面的返回語(yǔ)句形式對調用他們的程序返回一個(gè)值。
return value;value是返回值。下面是一個(gè)簡(jiǎn)單的類(lèi)的例子:class Sameple { int a,b; int sum() { return a+b; }}聲明類(lèi)的對象 每當創(chuàng )建一個(gè)類(lèi)時(shí),就是在創(chuàng )建一個(gè)新的數據類(lèi)型,可以用這個(gè)數據類(lèi)型去聲明這種類(lèi)型的對象。
然而,獲得一個(gè)類(lèi)的對象一般分兩步進(jìn)行。首先,必須聲明這個(gè)類(lèi)型的一個(gè)變量,這個(gè)變量并沒(méi)有定義對象本身,而僅僅是一個(gè)可以指向對象的變量。
第二步,必須獲得這個(gè)對象的一個(gè)實(shí)際的物理拷貝,并將其賦給已聲明的那個(gè)變量。使用new運算完成這一步。
new運算符為對象動(dòng)態(tài)分配(即在程序運行時(shí)分配)內存,并為其返回一個(gè)引用。 該引用或多或少的是由new分配給對象的內存的地址。
然后該引用被保存在變量中。因此,JAVA中所有類(lèi)的對象一定是動(dòng)態(tài)分配的。
下面是一個(gè)創(chuàng )建Sample類(lèi)(前面定義的)對象的例子:Sample ob = new Sample(); 這條語(yǔ)句將剛才提到的兩步合二為一了。 可以重新寫(xiě)成下面這樣一來(lái),更清楚的表示出2步:Sample ob;ob = new Sample(); 一旦得到一個(gè)類(lèi)對象,就可以使用“。
“運算符訪(fǎng)問(wèn)其成員。下面是通常的形式:object-name。
member-name 如,給ob的成員a賦值10,使用下面語(yǔ)句:ob。 a = 10;構造函數 構造函數在創(chuàng )建對象時(shí)立即對其進(jìn)行初始化。
構造函數與它所在的類(lèi)具有相同的名字,在語(yǔ)句構成上與方法類(lèi)似。然而,構造函數沒(méi)有返回值,甚至也不返回void。
這是因為類(lèi)的構造函數隱含的返回類(lèi)型是類(lèi)類(lèi)型本身。初始化對象的內部狀態(tài),以便使代碼創(chuàng )建實(shí)例時(shí)有一個(gè)完全初始化的、可用的對象是構造函數的任務(wù)。
構造函數可以有參數,這些參數接收創(chuàng )建對象時(shí)傳遞給構造的參數。典型情況下,包含在構造函數參數中的這些值用于初始化對象。
當創(chuàng )建每個(gè)對象的時(shí)候,傳遞給構造函數的參數即被指定。例如,下面是一個(gè)加到Sample類(lèi)中有參數的構造函數的例子。
class Sample { int a,b;// constructorSample(int x,int y) { a = x; b = y;}int sum() { return a+b;}。
這個(gè)從關(guān)鍵字來(lái)理解啊,
1. 如果方法定義前面加final,說(shuō)明你已經(jīng)知道這個(gè)方法提供的功能已經(jīng)滿(mǎn)足你要求,不需要進(jìn)行擴展,并且也不允許任何從此類(lèi)繼承的類(lèi)來(lái)覆寫(xiě)這個(gè)方法,但是繼承仍然可以繼承這個(gè)方法,也就是說(shuō)可以直接使用。
2. 如果方法定義前面加static,表示靜態(tài)方法,方法和類(lèi)關(guān)聯(lián),直接由類(lèi)名來(lái)調用。
3. 如果方法定義前面加abstract,表示抽象方法,由繼承類(lèi)來(lái)實(shí)現。
4. 對于方法前面的public, private,protected等這些是控制方法可以被調用的范圍。
5. 如果方法定義前面有native,Native方法是由另外一種語(yǔ)言(如c/c++,FORTRAN,匯編)實(shí)現的本地方法。因為在外部實(shí)現了方法,所以在java代碼中,就不需要聲明了,有點(diǎn)類(lèi)似于借口方法,一般用不著(zhù)。
6.如果方法定義前面加synchronized,表示當前方法體是一個(gè)臨界區,通過(guò)鎖機制來(lái)控制多個(gè)線(xiàn)程同步,在多線(xiàn)程應用里面經(jīng)常使用。
Java程序在運行時(shí),Java運行時(shí)系統一直對所有的對象進(jìn)行所謂的運行時(shí)類(lèi)型標識。
這項信息紀錄了每個(gè)對象所屬的類(lèi)。虛擬機通常使用運行時(shí)類(lèi)型信息選準正確方法去執行,用來(lái)保存這些類(lèi)型信息的類(lèi)是Class類(lèi)。
Class類(lèi)封裝一個(gè)對象和接口運行時(shí)的狀態(tài),當裝載類(lèi)時(shí),Class類(lèi)型的對象自動(dòng)創(chuàng )建。Class沒(méi)有公共構造方法。
Class對象是在加載類(lèi)時(shí)由Java虛擬機以及通過(guò)調用類(lèi)加載器中的defineClass方法自動(dòng)構造的,因此不能顯式地聲明一個(gè)Class對象。虛擬機為每種類(lèi)型管理一個(gè)獨一無(wú)二的Class對象。
也就是說(shuō),每個(gè)類(lèi)(型)都有一個(gè)Class對象。運行程序時(shí),Java虛擬機(JVM)首先檢查是否所要加載的類(lèi)對應的Class對象是否已經(jīng)加載。
如果沒(méi)有加載,JVM就會(huì )根據類(lèi)名查找.class文件,并將其Class對象載入。基本的Java類(lèi)型(boolean、byte、char、short、int、long、float和double)和關(guān)鍵字void也都對應一個(gè)Class對象。
每個(gè)數組屬于被映射為Class對象的一個(gè)類(lèi),所有具有相同元素類(lèi)型和維數的數組都共享該Class對象。一般某個(gè)類(lèi)的Class對象被載入內存,它就用來(lái)創(chuàng )建這個(gè)類(lèi)的所有對象。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.398秒