




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 在一個(gè)獨(dú)立的原始程序中,只能有一個(gè)public類(lèi),卻可以有許多non-public類(lèi)。2.在一個(gè)Java程序中有且只能有一個(gè)main()方法由于Java程序是由類(lèi)所組成,所以在完整的Java程序里,必須且至少有一個(gè)類(lèi)。3.public static void main(String args) / main() method,主程序開(kāi)始 public代表main()公有的method;static表示main()在沒(méi)有創(chuàng)建類(lèi)對(duì)象的情況下,仍然可以被運(yùn)行;void則表示main()方法沒(méi)有返回值。Main后的括號(hào)()中的參數(shù)String args表示運(yùn)行該程序時(shí)所需要的參數(shù)4.·
2、單行注釋 / ·多行注釋 /* */ ·文檔注釋 /*用這種方法注釋的內(nèi)容會(huì)被解釋成程序的正式文檔,并能包含進(jìn)如javadoc之類(lèi)的工具生成的文檔里,用以說(shuō)明該程序的層次結(jié)構(gòu)及其方法。*/ 5.標(biāo)識(shí)符:可由任意順序的大小寫(xiě)字母、數(shù)字、下劃線(xiàn)(_)和美元符號(hào)($)組成,但標(biāo)識(shí)符不能以數(shù)字開(kāi)頭,不能是Java中的保留關(guān)鍵字。6.變量的設(shè)置有以下三種方法:在聲明的時(shí)候設(shè)置、聲明后再設(shè)置、在程序中的任何位置聲明并設(shè)置。7基本數(shù)據(jù)類(lèi)型 字節(jié) long(長(zhǎng)整數(shù)) 8 int(整數(shù)) 4 short(短整數(shù)) 2 byte(位) 1 char() 1 boolean() 1 float(
3、) 4 double() 8 當(dāng)最大值加上1時(shí),結(jié)果反而變成表示范圍中最小的值;當(dāng)最大值加上2時(shí),結(jié)果變成表示范圍中次小的值,這就是數(shù)據(jù)類(lèi)型的溢出。8. 使用浮點(diǎn)型數(shù)值時(shí),默認(rèn)的類(lèi)型是double,在數(shù)值后面可加上D或是d,作為double類(lèi)型的標(biāo)識(shí)。在Java中,D或d是可有可無(wú)的。在數(shù)據(jù)后面加上F或是f,則作為float類(lèi)型的識(shí)別。若是沒(méi)有加上,Java就會(huì)將該數(shù)據(jù)視為double類(lèi)型,而在編譯時(shí)就會(huì)發(fā)生錯(cuò)誤,錯(cuò)誤提示會(huì)告訴設(shè)計(jì)者可能會(huì)失去精確度。9.自動(dòng)類(lèi)型轉(zhuǎn)換【擴(kuò)大轉(zhuǎn)換】條件:放大精度1)轉(zhuǎn)換前的數(shù)據(jù)類(lèi)型與轉(zhuǎn)換后的類(lèi)型兼容。 【當(dāng)兩個(gè)數(shù)中有一個(gè)為浮點(diǎn)數(shù)時(shí),其運(yùn)算的結(jié)果會(huì)直接轉(zhuǎn)換為浮點(diǎn)數(shù)
4、。當(dāng)表達(dá)式中變量的類(lèi)型不同時(shí),Java會(huì)自動(dòng)以較小的表示范圍轉(zhuǎn)換成較大的表示范圍后,再作運(yùn)算。也就是說(shuō),假設(shè)有一個(gè)整數(shù)和雙精度浮點(diǎn)數(shù)作運(yùn)算時(shí),Java會(huì)把整數(shù)轉(zhuǎn)換成雙精度浮點(diǎn)數(shù)后再作運(yùn)算,運(yùn)算結(jié)果也會(huì)變成雙精度浮點(diǎn)數(shù)?!?)轉(zhuǎn)換后的數(shù)據(jù)類(lèi)型的表示范圍比轉(zhuǎn)換前的類(lèi)型大。強(qiáng)制類(lèi)型轉(zhuǎn)換【縮小轉(zhuǎn)換】:失去精度10.一元運(yùn)算符: a a的補(bǔ)碼-a a取反11. a+會(huì)先執(zhí)行整個(gè)語(yǔ)句后再將a的值加1;+b則先把b的值加1后,再執(zhí)行整個(gè)語(yǔ)句。12.運(yùn)算符的優(yōu)先級(jí)a /= b- / 相當(dāng)于計(jì)算 a = a / b 之后,再計(jì)算b- 13.表達(dá)式的類(lèi)型轉(zhuǎn)換當(dāng)Java發(fā)現(xiàn)程序的表達(dá)式中有類(lèi)型不相符的情況時(shí),會(huì)依據(jù)
5、下列的規(guī)則來(lái)處理類(lèi)型的轉(zhuǎn)換。1)占用字節(jié)較少的類(lèi)型轉(zhuǎn)換成占用字節(jié)較多的類(lèi)型。 2)字符類(lèi)型會(huì)轉(zhuǎn)換成int類(lèi)型。 3)int類(lèi)型會(huì)轉(zhuǎn)換成float類(lèi)型。 4)表達(dá)式中若某個(gè)操作數(shù)的類(lèi)型為double,則另一個(gè)操作數(shù)字也會(huì)轉(zhuǎn)換成double類(lèi)型。5)布爾類(lèi)型不能轉(zhuǎn)換成其它類(lèi)型。 14. 一般來(lái)說(shuō)程序的結(jié)構(gòu)包含有下面三種: 1)順序結(jié)構(gòu) 2)選擇結(jié)構(gòu) :switch (表達(dá)式) /switch語(yǔ)句里的選擇值只能是字符或是常量case 選擇值1:語(yǔ)句主體 1 ; break ; /break是跳出語(yǔ)句case 選擇值2 : 語(yǔ)句主體 2 ; break ; . case 選擇值n : 語(yǔ)句主體 n ;
6、 break ; default: 語(yǔ)句主體;/若是沒(méi)有定義default該執(zhí)行的語(yǔ)句,則什么也不會(huì)執(zhí)行,直接離開(kāi)switch語(yǔ)句。 3)循環(huán)結(jié)構(gòu) 15. break語(yǔ)句可以強(qiáng)迫程序跳離循環(huán),當(dāng)程序執(zhí)行到break語(yǔ)句時(shí),即會(huì)離開(kāi)循環(huán), 繼續(xù)執(zhí)行循環(huán)外的下一個(gè)語(yǔ)句,如果break語(yǔ)句出現(xiàn)在嵌套循環(huán)中的內(nèi)層循環(huán),則break 語(yǔ)句只會(huì)跳離當(dāng)前層的循環(huán)。以下圖的for循環(huán)為例,在循環(huán)主體中有break語(yǔ)句時(shí),當(dāng)程序執(zhí)行到break,即會(huì)離開(kāi)循環(huán)主體,而繼續(xù)執(zhí)行循環(huán)外層的語(yǔ)句。continue語(yǔ)句可以強(qiáng)迫程序跳到循環(huán)的起始處,當(dāng)程序運(yùn)行到continue語(yǔ)句時(shí),即會(huì)停止運(yùn)行剩余的循環(huán)主體,而是回到循
7、環(huán)的開(kāi)始處繼續(xù)運(yùn)行。以下圖的for循環(huán)為例,在循環(huán)主體中有continue語(yǔ)句,當(dāng)程序執(zhí)行到continue,即會(huì)回到循環(huán)的起點(diǎn),繼續(xù)執(zhí)行循環(huán)主體的部分語(yǔ)句。當(dāng)判斷條件成立時(shí),break語(yǔ)句與continue語(yǔ)句會(huì)有不同的執(zhí)行方式。Break語(yǔ)句不管情況如何,先離開(kāi)循環(huán)再說(shuō);而continue語(yǔ)句則不再執(zhí)行此次循環(huán)的剩余語(yǔ)句,直接回到循環(huán)的起始處。16. 在循環(huán)里也可以聲明變量,但所聲明的變量只是局部變量,只要跳出循環(huán),這個(gè)變量便不能再使用。17.一維數(shù)組 兩個(gè)步驟:(1)聲明數(shù)組;(2)分配內(nèi)存給該數(shù)組。例:int score;/聲明score =new int3;/分配空間System.o
8、ut.println("n數(shù)組長(zhǎng)度是: "+score.length); /輸出數(shù)組長(zhǎng)度二維數(shù)組int score = new int43 ; / 聲明整型數(shù)組score,同時(shí)為其開(kāi)辟一塊內(nèi)存空間在二維數(shù)組中,若是想取得整個(gè)數(shù)組的行數(shù),或者是某行元素的個(gè)數(shù)時(shí),可利用“.length”來(lái)獲取num.length; / 計(jì)算數(shù)組num的行數(shù),其值為3num0.length / 計(jì)算數(shù)組num的第1行元素的個(gè)數(shù),其值為4Java允許二維數(shù)組中每行的元素個(gè)數(shù)均不相同。18. 面向?qū)ο蟮某绦蛟O(shè)計(jì)有三個(gè)主要特征,如下: 1.封裝性 2.繼承性 3.多態(tài)性1) 封裝性:a. 把對(duì)象的屬性
9、和行為看成一個(gè)密不可分的整體,將這兩者封裝在一個(gè)不可分割的獨(dú)立單位(即對(duì)象)中。b.把不需要讓外界知道的信息隱藏起來(lái),有些對(duì)象的屬性及行為允許外界用戶(hù)知道或使用,但不允許更改,而另一些屬性或行為,則不允許外界知曉;或只允許使用對(duì)象的功能,而盡可能隱蔽對(duì)象的功能實(shí)現(xiàn)細(xì)節(jié)。 2)繼承性 3)多態(tài)性允許程序中出現(xiàn)重名現(xiàn)象 a. 方法重載:在一個(gè)類(lèi)中,允許多個(gè)方法使用同一個(gè)名字,但方法的參數(shù)不同,完成的功能也不同。 b. 成員覆蓋:子類(lèi)與父類(lèi)允許具有相同的變量名稱(chēng),但數(shù)據(jù)類(lèi)型不同,允許具有相同的方法名稱(chēng),但完成的功能不同。19. 聲明類(lèi)Person時(shí),類(lèi)名中單詞的首字母最好是大寫(xiě)的。 創(chuàng)建類(lèi): Per
10、son p; P=new person();或者Person p=new Person();/對(duì)象只有在實(shí)例化之后才能被使用,而實(shí)例化對(duì)象的關(guān)鍵字就是new。20. 訪(fǎng)問(wèn)屬性:對(duì)象名稱(chēng).屬性名 訪(fǎng)問(wèn)方法:對(duì)象名稱(chēng).方法名()例:Person p;=“張三”;page=25;ptalk();21. 【封裝類(lèi)中的屬性或方法】“封裝”(encapsulation):是把屬性和方法包裝在一個(gè)類(lèi)內(nèi)以限定成員的訪(fǎng)問(wèn),以起到保護(hù)數(shù)據(jù)的作用。 封裝屬性:private 屬性類(lèi)型 屬性名 私有成員(private member)可限定類(lèi)中的屬性,被限制成私有的屬性?xún)H能供同一類(lèi)內(nèi)的方法所訪(fǎng)問(wèn)。封裝方法
11、:private 方法返回類(lèi)型 方法名稱(chēng)(參數(shù))在類(lèi)的外部不能用對(duì)象去調(diào)用private聲明的屬性或方法。類(lèi)的外部可訪(fǎng)問(wèn)到類(lèi)內(nèi)部的公有成員(public member)。在類(lèi)內(nèi)部調(diào)用:在一個(gè)java程序中是可以通過(guò)對(duì)象去調(diào)用類(lèi)中的方法的,當(dāng)然類(lèi)的內(nèi)部也能互相調(diào)用各自的方法垃圾對(duì)象:就是指程序中不再使用的對(duì)象引用匿名對(duì)象:只使用一次的對(duì)象,即沒(méi)有任何一個(gè)具體的對(duì)象名稱(chēng)引用它例:new Person("張三",25) ;22.構(gòu)造方法:構(gòu)造方法可視為一種特殊的方法,它的主要作用是為所創(chuàng)建的對(duì)象賦初值。1)它具有與類(lèi)名相同的名稱(chēng) 【構(gòu)造方法的名稱(chēng)必須與其所屬的類(lèi)的類(lèi)名稱(chēng)相同,且不
12、能有返回值?!?)它沒(méi)有返回值構(gòu)造方法則是在創(chuàng)建對(duì)象時(shí),便自動(dòng)調(diào)用,并執(zhí)行構(gòu)造方法的內(nèi)容。因此,構(gòu)造方法無(wú)需在程序中直接調(diào)用,而是在對(duì)象產(chǎn)生時(shí)自動(dòng)執(zhí)行。如果在程序中沒(méi)有明確聲明一構(gòu)造方法的話(huà),系統(tǒng)會(huì)自動(dòng)為類(lèi)加入一個(gè)無(wú)參的且什么都不做的構(gòu)造方法。類(lèi)似于下面代碼: public Person() 所以,之前所使用的程序雖然沒(méi)有明確的聲明構(gòu)造方法,也是可以正常運(yùn)行的。23.構(gòu)造方法的重載:只要構(gòu)造方法的參數(shù)個(gè)數(shù)不同,或是類(lèi)型不同,便可定義多個(gè)名稱(chēng)相同的構(gòu)造方法。在java程序中只要明確的聲明了構(gòu)造方法,則默認(rèn)的構(gòu)造方法將不會(huì)被自動(dòng)生成。24.對(duì)象的比較:“= =”運(yùn)算符與equals()方法a. 用
13、的“=”比較,比較的是內(nèi)存地址值b. “equals”是比較內(nèi)容的 String str1 = new String("java") ; String str2 = new String("java") ; (str1.equals(str2) => str1 equals str225.兩種String對(duì)象的聲明方式的不同在哪? String str1 = new String("java"); String str2 = "java"String對(duì)象的內(nèi)容一旦聲明則不能輕易改變。如果想改變一個(gè)String
14、對(duì)象的值,則第一步要做的是先將原有的String引用斷開(kāi),之后再開(kāi)辟新的內(nèi)存空間,而且如果用new關(guān)鍵字開(kāi)辟String對(duì)象的內(nèi)存空間的話(huà),則實(shí)際上就開(kāi)辟了兩個(gè)內(nèi)存空間26.this關(guān)鍵字1)this表示當(dāng)前對(duì)象: = name ;2)如果在程序中想用某一構(gòu)造方法調(diào)用另一構(gòu)造方法,可以用this來(lái)實(shí)現(xiàn),具體的調(diào)用形式如下: this() 構(gòu)造方法是在實(shí)例化一對(duì)象時(shí)被自動(dòng)調(diào)用的,也就是說(shuō)在類(lèi)中的所有方法里,只有構(gòu)造方法是被優(yōu)先調(diào)用的,所以使用this調(diào)用構(gòu)造方法必須也只能放在構(gòu)造方法的第一行.27.static 關(guān)鍵字靜態(tài)變量:聲明的屬性是所有對(duì)象共享的。靜態(tài)方法:既可以在聲明
15、變量時(shí)使用,也可以用其來(lái)聲明方法,用它聲明的方法有時(shí)也被稱(chēng)為“類(lèi)方法”。 如果在類(lèi)中聲明了一static類(lèi)型的屬性,則此屬性既可以在非static類(lèi)型的方法中使用,也可以在static類(lèi)型的方法中使用。但用static類(lèi)型的屬性調(diào)用非static類(lèi)型的屬性時(shí),則會(huì)出現(xiàn)錯(cuò)誤。28.構(gòu)造方法的私有:構(gòu)造方法雖然被私有了,但并不一定是說(shuō)此類(lèi)不能產(chǎn)生實(shí)例化對(duì)象,只是產(chǎn)生這個(gè)實(shí)例化對(duì)象的位置有所變化,即只能在本類(lèi)中產(chǎn)生實(shí)例化對(duì)象。29.對(duì)象數(shù)組的使用例:創(chuàng)建三個(gè)Person 類(lèi)類(lèi)型的數(shù)組元素法一:Person p=new Person3;P0=new Person();P1=new Person();P
16、2=new Person();法二:【動(dòng)態(tài)初始化】for(i=0;i<p.length;i+) Pi=new Person();法三:【靜態(tài)初始化】Person p=new Person() , new Person() , new Person() /采用靜態(tài)方式初始化對(duì)象數(shù)組利用父類(lèi)的變量數(shù)組來(lái)訪(fǎng)問(wèn)子類(lèi)的內(nèi)容的較好的做法是:(1) 先創(chuàng)建父類(lèi)的變量數(shù)組; (2) 利用數(shù)組元素創(chuàng)建子類(lèi)的對(duì)象,并以它來(lái)訪(fǎng)問(wèn)子類(lèi)的內(nèi)容。30.內(nèi)部類(lèi):在類(lèi)內(nèi)部也可以定義另一個(gè)類(lèi) 內(nèi)部類(lèi)可聲明成public或private。當(dāng)內(nèi)部類(lèi)聲明成public或private時(shí),對(duì)其訪(fǎng)問(wèn)的限制與成員變量和成員方法完全相
17、同。內(nèi)部類(lèi)Inner可以直接調(diào)用外部類(lèi)Outer中的score屬性外部類(lèi)是無(wú)法找到內(nèi)部類(lèi)中所聲明的屬性,而內(nèi)部類(lèi)則可以訪(fǎng)問(wèn)外部類(lèi)的屬性。用static可以聲明屬性或方法,而用static也可以聲明內(nèi)部類(lèi),用static聲明的內(nèi)部類(lèi)則變成外部類(lèi),但是用static聲明的內(nèi)部類(lèi)不能訪(fǎng)問(wèn)非static的外部類(lèi)屬性。31.在類(lèi)外部引用內(nèi)部類(lèi):內(nèi)部類(lèi)也可以通過(guò)創(chuàng)建對(duì)象從外部類(lèi)之外被調(diào)用,只要將內(nèi)部類(lèi)聲明為public即可。在方法中定義內(nèi)部類(lèi):內(nèi)部類(lèi)不僅可以在類(lèi)中定義,也可以在方法中定義內(nèi)部類(lèi)。final定義的局部變量:相當(dāng)于是一個(gè)常量,它的生命周期超出方法運(yùn)行的生命周期31.繼承在java中只允許單繼承
18、,而不允許多重繼承,也就是說(shuō)一個(gè)子類(lèi)只能有一個(gè)父類(lèi),但是java中卻允許多層繼承。錯(cuò)誤正確子類(lèi)對(duì)象在實(shí)例化時(shí)會(huì)默認(rèn)先去調(diào)用父類(lèi)中的無(wú)參構(gòu)造方法,之后再調(diào)用本類(lèi)中的相應(yīng)構(gòu)造方法。 如果程序中指定了構(gòu)造方法,則默認(rèn)構(gòu)造方法不會(huì)再生成。只要在父類(lèi)中增加一個(gè)什么都不做的構(gòu)造方法,這一問(wèn)題就可以解決了32. super:主要的功能是完成子類(lèi)調(diào)用父類(lèi)中的內(nèi)容,也就是調(diào)用父類(lèi)中的屬性或方法。super.父類(lèi)中的屬性; super.父類(lèi)中的方法() ;用super調(diào)用父類(lèi)中的構(gòu)造方法,只能放在程序的第一行,并且this()與super()只可使用其中一條。33.private:只要父類(lèi)中的屬性被“privat
19、e”聲明的話(huà),那么子類(lèi)就再也無(wú)法訪(fǎng)問(wèn)到它了。實(shí)際上并不是這樣的,在父類(lèi)中加入了private關(guān)鍵字修飾,其目的只是相當(dāng)于對(duì)子類(lèi)隱藏了此屬性,子類(lèi)無(wú)法去顯式的調(diào)用這些屬性,但是卻可以隱式地去調(diào)用?!咀宇?lèi)在繼承父類(lèi)時(shí),會(huì)繼承父類(lèi)中的全部的屬性與方法。】34.復(fù)寫(xiě):它是在子類(lèi)當(dāng)中,定義名稱(chēng)、參數(shù)個(gè)數(shù)與類(lèi)型均與父類(lèi)相同的方法,用以復(fù)寫(xiě)父類(lèi)里的方法; 重載:它是指在相同類(lèi)內(nèi),定義名稱(chēng)相同,但參數(shù)個(gè)數(shù)或類(lèi)型不同的方法,因此Java便可依據(jù)參數(shù)的個(gè)數(shù)或類(lèi)型調(diào)用相應(yīng)的方法。注意:子類(lèi)復(fù)寫(xiě)父類(lèi)中的方法時(shí),被子類(lèi)復(fù)寫(xiě)的方法不能擁有比父類(lèi)中更嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。public權(quán)限要高于default權(quán)限。原有的類(lèi)稱(chēng)為基類(lèi)
20、或父類(lèi),而新的類(lèi)則稱(chēng)為派生類(lèi)或子類(lèi)35.this與super比較36.抽象類(lèi)· 抽象類(lèi)和抽象方法都必須用abstract關(guān)鍵字來(lái)修飾。 · 抽象類(lèi)不能被實(shí)例化,也就是不能用new關(guān)鍵字去產(chǎn)生對(duì)象。· 抽象方法只需聲明,而不需實(shí)現(xiàn)。· 含有抽象方法的類(lèi)必須被聲明為抽象類(lèi),抽象類(lèi)的子類(lèi)必須復(fù)寫(xiě)所有的抽象方法后才能被實(shí)例化,否則這個(gè)子類(lèi)還是個(gè)抽象類(lèi)。在抽象類(lèi)定義的語(yǔ)法中,方法的定義可分為兩種:一種是一般的方法;另一種是“抽象方法”,它是以abstract關(guān)鍵字為開(kāi)頭的方法,此方法只聲明了返回值的數(shù)據(jù)類(lèi)型、方法名稱(chēng)與所需的參數(shù),但沒(méi)有定義方法體。在抽象類(lèi)中,也可
21、以擁有構(gòu)造方法,但是這些構(gòu)造方法必須在子類(lèi)中被調(diào)用。37.Object類(lèi): 它是所有類(lèi)的父類(lèi),如果一個(gè)類(lèi)沒(méi)有使用extends關(guān)鍵字明確標(biāo)識(shí)繼承另外一個(gè)類(lèi),那么這個(gè)類(lèi)就默認(rèn)繼承Object類(lèi)。Object類(lèi)是Java類(lèi)層中的最高層類(lèi),是所有類(lèi)的超類(lèi)。換句話(huà)說(shuō),Java中任何一個(gè)類(lèi)都是它的子類(lèi)。由于所有的類(lèi)都是由Object類(lèi)衍生出來(lái)的,所以O(shè)ject類(lèi)中的方法適用于所有類(lèi)。38.final關(guān)鍵字:1) final標(biāo)記的類(lèi)不能被繼承?!咀罱K類(lèi)沒(méi)有子類(lèi)】2) final標(biāo)記的方法不能被子類(lèi)復(fù)寫(xiě)。3) final標(biāo)記的變量(成員變量或局部變量)即為常量,只能賦值一次。39.接口1)接口里的數(shù)據(jù)成員必
22、須初始化,且數(shù)據(jù)成員均為常量。 2)接口里的方法必須全部聲明為abstract,也就是說(shuō),接口不能像抽象類(lèi)一樣保有一般的方法,而必須全部是“抽象方法”。接口與一般類(lèi)一樣,本身也具有數(shù)據(jù)成員與方法,但數(shù)據(jù)成員一定要賦初值,且此值將不能再更改,方法也必須是“抽象方法”。也正因?yàn)榉椒ū仨毷浅橄蠓椒?,而沒(méi)有一般的方法,抽象方法聲明的關(guān)鍵字abstract是可以省略的。相同的情況也發(fā)生在數(shù)據(jù)成員身上,因數(shù)據(jù)成員必須賦初值,且此值不能再被更改,所以聲明數(shù)據(jù)成員的關(guān)鍵字final也可省略。利用接口打造新的類(lèi)的過(guò)程,稱(chēng)之為接口的實(shí)現(xiàn)(implementation)。一個(gè)接口可以同時(shí)繼承多個(gè)接口,也就是同時(shí)繼承
23、了多個(gè)接口的抽象方法與常量。40.對(duì)象的多態(tài)性Java對(duì)象的多態(tài)性分為:向上轉(zhuǎn)型(自動(dòng))、向下轉(zhuǎn)型(強(qiáng)制)。41. 復(fù)寫(xiě)Object類(lèi)中的equals() method可用來(lái)比較兩個(gè)類(lèi)的對(duì)象是否相等。42. 通過(guò)instanceof關(guān)鍵字,可以判斷對(duì)象屬于那個(gè)類(lèi)。43.異常處理常見(jiàn)異常:1、算術(shù)異常(ArithmeticException)。2、沒(méi)有給對(duì)象開(kāi)辟內(nèi)存空間時(shí)會(huì)出現(xiàn)空指針異常(NullPointerException)。3、找不到文件異常(FileNotFoundException)。4、數(shù)組下標(biāo)超出異常(ArrayIndexOutOfBoundsException)所有的異常都是以
24、類(lèi)的類(lèi)型存在,除了內(nèi)置的異常類(lèi)之外,Java也可以自定義的異常類(lèi)。如果沒(méi)有編寫(xiě)相應(yīng)的處理異常的程序代碼,則Java的默認(rèn)異常處理機(jī)制會(huì)先拋出異常、然后停止程序運(yùn)行。異常的處理: 1) try程序塊若是有異常發(fā)生時(shí),程序的運(yùn)行便中斷,并拋出“異常類(lèi)所產(chǎn)生的對(duì)象”。2)拋出的對(duì)象如果屬于catch()括號(hào)內(nèi)欲捕獲的異常類(lèi),則catch會(huì)捕捉此異常,然后進(jìn)到catch的塊里繼續(xù)運(yùn)行。3)無(wú)論try程序塊是否有捕捉到異常,或者捕捉到的異常是否與catch()括號(hào)里的異常相同,最后一定會(huì)運(yùn)行finally塊里的程序代碼。finally的程序代碼塊運(yùn)行結(jié)束后,程序再回到try-catch-finally塊
25、之后繼續(xù)執(zhí)行。finally塊是可以省略的。如果省略了finally塊不寫(xiě),則在catch()塊運(yùn)行結(jié)束后,程序跳到try-cath塊之后繼續(xù)執(zhí)行。通過(guò)異常的機(jī)制,即使程序運(yùn)行時(shí)發(fā)生問(wèn)題,只要能捕捉到異常,程序便能順利地運(yùn)行到最后,且還能適時(shí)的加入對(duì)錯(cuò)誤信息的提示。Error類(lèi)專(zhuān)門(mén)用來(lái)處理嚴(yán)重影響程序運(yùn)行的錯(cuò)誤,可是通常程序設(shè)計(jì)者不會(huì)設(shè)計(jì)程序代碼去捕捉這種錯(cuò)誤,其原因在于即使捕捉到它,也無(wú)法給予適當(dāng)?shù)奶幚?,如JAVA虛擬機(jī)出錯(cuò)就屬于一種Error。不同于Error類(lèi),Exception類(lèi)包含了一般性的異常,這些異常通常在捕捉到之后便可做妥善的處理,以確保程序繼續(xù)運(yùn)行。RunntimeExcep
26、tion即使不編寫(xiě)異常處理的程序代碼,依然可以編譯成功,而這種異常必須是在程序運(yùn)行時(shí)才有可能發(fā)生,例如:數(shù)組的索引值超出了范圍。IOException 一定要編寫(xiě)異常處理的程序代碼才行,它通常用來(lái)處理與輸入/輸出相關(guān)的操作,如文件的訪(fǎng)問(wèn)、網(wǎng)絡(luò)的連接等。如何拋出異常?1)程序中拋出異常 throw 異常類(lèi)實(shí)例對(duì)象;2)指定方法拋出異常方法名稱(chēng)(參數(shù)) throws 異常類(lèi)1,異常類(lèi)2,在調(diào)用用throws拋出異常的方法時(shí),可以將此異常在方法中再向上傳遞,而main()方法是整個(gè)程序的起點(diǎn),所以如果在main()方法處如果再用throws拋出異常,則此異常就將交由JVM進(jìn)行處理了。自定義異常:cl
27、ass 異常名稱(chēng) extends Exception 44.包及訪(fǎng)問(wèn)權(quán)限package package名稱(chēng) ;import語(yǔ)句import package名稱(chēng).類(lèi)名稱(chēng);通過(guò)import命令,可將某個(gè)package內(nèi)的整個(gè)類(lèi)導(dǎo)入,因此后續(xù)的程序代碼便不用再寫(xiě)上被訪(fǎng)問(wèn)package的名稱(chēng)了。45.JDK中常見(jiàn)的包1、 java.lang 包含一些Java語(yǔ)言的核心類(lèi),如String、Math、Integer、System和Thread,提供常用功能。在java.lang包中還有一個(gè)子包:java.lang.reflect用于實(shí)現(xiàn)java類(lèi)的反射機(jī)制。2、 java.awt 包含了構(gòu)成抽象窗口工具集
28、(abstract window toolkits)的多個(gè)類(lèi),這些類(lèi)被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶(hù)界面(GUI)。3、 javax.swing 此包用于建立圖形用戶(hù)界面,此包中的組件相對(duì)于java.awt包而言是輕量級(jí)組件。4、 java.applet 包含applet運(yùn)行所需的一些類(lèi)。5、 包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類(lèi)。 6、 java.io 包含能提供多種輸入/輸出功能的類(lèi)。7、 java.util 包含一些實(shí)用工具類(lèi),如定義系統(tǒng)特性、與日期日歷相關(guān)的函數(shù)。46.類(lèi)成員的訪(fǎng)問(wèn)控制權(quán)限1)private訪(fǎng)問(wèn)控制符在前面已經(jīng)介紹了private訪(fǎng)問(wèn)控制符的作用,如果一個(gè)成員方法或成員變量名
29、前使用了private訪(fǎng)問(wèn)控制符,那么這個(gè)成員只能在這個(gè)類(lèi)的內(nèi)部使用。注意:不能在方法體內(nèi)聲明的變量前加private修飾符。2 )默認(rèn)訪(fǎng)問(wèn)控制符 如果一個(gè)成員方法或成員變量名前沒(méi)有使用任何訪(fǎng)問(wèn)控制符,就稱(chēng)這個(gè)成員所擁有的是默認(rèn)的(default)訪(fǎng)問(wèn)控制符。默認(rèn)的訪(fǎng)問(wèn)控制成員可以被這個(gè)包中的其它類(lèi)訪(fǎng)問(wèn)。如果一個(gè)子類(lèi)與其父類(lèi)位于不同的包中,子類(lèi)也不能訪(fǎng)問(wèn)父類(lèi)中的默認(rèn)訪(fǎng)問(wèn)控制成員。3 ) protected訪(fǎng)問(wèn)控制符 如果一個(gè)成員方法或成員變量名前使用了protected訪(fǎng)問(wèn)控制符,那么這個(gè)成員既可以被同一個(gè)包中的其它類(lèi)訪(fǎng)問(wèn),也可以被不同包中的子類(lèi)訪(fǎng)問(wèn)。4 ) public訪(fǎng)問(wèn)控制符 如果一個(gè)成
30、員方法或成員變量名前使用了public訪(fǎng)問(wèn)控制符,那么這個(gè)成員可以被所有的類(lèi)訪(fǎng)問(wèn),不管訪(fǎng)問(wèn)類(lèi)與被訪(fǎng)問(wèn)類(lèi)是否在同一個(gè)包中。使用jar命令可以將一個(gè)包打成一個(gè)jar文件,供用戶(hù)使用。44.Java多線(xiàn)程它可以讓不同的程序塊一起運(yùn)行,可讓程序運(yùn)行更為順暢,同時(shí)也可達(dá)到多任務(wù)處理的目的。1)進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過(guò)程,它經(jīng)歷了從代碼加載、執(zhí)行到執(zhí)行完畢的一個(gè)完整過(guò)程,這個(gè)過(guò)程也是進(jìn)程本身從產(chǎn)生、發(fā)展到最終消亡的過(guò)程。2)線(xiàn)程是比進(jìn)程更小的執(zhí)行單位,線(xiàn)程是進(jìn)程內(nèi)部單一的一個(gè)順序控制流。所謂多線(xiàn)程是指一個(gè)進(jìn)程在執(zhí)行過(guò)程中可以產(chǎn)生多個(gè)線(xiàn)程,這些線(xiàn)程可以同時(shí)存在、同時(shí)運(yùn)行,形成多條執(zhí)行線(xiàn)索。一個(gè)進(jìn)程可能包含
31、了多個(gè)同時(shí)執(zhí)行的線(xiàn)程。線(xiàn)程和進(jìn)程的主要差別體現(xiàn)在以下兩個(gè)方面: (1)同樣作為基本的執(zhí)行單元,線(xiàn)程是劃分得比進(jìn)程更小的執(zhí)行單位。(2)每個(gè)進(jìn)程都有一段專(zhuān)用的內(nèi)存區(qū)域。與此相反,線(xiàn)程卻共享內(nèi)存單元(包括代碼和數(shù)據(jù)),通過(guò)共享的內(nèi)存單元來(lái)實(shí)現(xiàn)數(shù)據(jù)交換、實(shí)時(shí)通信與必要的同步操作。實(shí)現(xiàn)多線(xiàn)程的兩種方法:(1) 通過(guò)繼承Thread類(lèi)實(shí)現(xiàn)多線(xiàn)程class 類(lèi)名稱(chēng) extends Thread / 從Thread類(lèi)擴(kuò)展出子類(lèi) 屬性 方法 修飾符 run() / 復(fù)寫(xiě)Thread類(lèi)里的run()方法以線(xiàn)程處理的程序; (2) 通過(guò)實(shí)現(xiàn)Runnable接口實(shí)現(xiàn)多線(xiàn)程在Java中如果一個(gè)類(lèi)繼承了某一個(gè)類(lèi),同時(shí)又
32、想采用多線(xiàn)程技術(shù)的時(shí),就不能用Thread類(lèi)產(chǎn)生線(xiàn)程,因?yàn)镴ava不允許多繼承,這時(shí)就要用Runnable接口來(lái)創(chuàng)建線(xiàn)程了。class 類(lèi)名稱(chēng) implements Runnable / 實(shí)現(xiàn)Runnable接口 屬性 方法 修飾符 run() / 復(fù)寫(xiě)Thread類(lèi)里的run()方法以線(xiàn)程處理的程序; 在Runnable接口中并沒(méi)有start()方法,所以一個(gè)類(lèi)實(shí)現(xiàn)了Runnable接口也必須用Thread類(lèi)中的start()方法來(lái)啟動(dòng)多線(xiàn)程。實(shí)現(xiàn)Runnable接口相對(duì)于繼承Thread類(lèi)來(lái)說(shuō),有如下顯著的優(yōu)勢(shì):(1)適合多個(gè)相同程序代碼的線(xiàn)程去處理同一資源的情況,把虛擬CPU(線(xiàn)程)同程
33、序的代碼、數(shù)據(jù)有效分離,較好地體現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)思想。(2)可以避免由于Java的單繼承特性帶來(lái)的局限。開(kāi)發(fā)中經(jīng)常碰到這樣一種情況,即:當(dāng)要將已經(jīng)繼承了某一個(gè)類(lèi)的子類(lèi)放入多線(xiàn)程中,由于一個(gè)類(lèi)不能同時(shí)有兩個(gè)父類(lèi),所以不能用繼承Thread類(lèi)的方式,那么就只能采用實(shí)現(xiàn)Runnable接口的方式了。(3)增強(qiáng)了程序的健壯性,代碼能夠被多個(gè)線(xiàn)程共享,代碼與數(shù)據(jù)是獨(dú)立的。當(dāng)多個(gè)線(xiàn)程的執(zhí)行代碼來(lái)自同一個(gè)類(lèi)的實(shí)例時(shí),即稱(chēng)它們共享相同的代碼。多個(gè)線(xiàn)程可以操作相同的數(shù)據(jù),與它們的代碼無(wú)關(guān)。當(dāng)共享訪(fǎng)問(wèn)相同的對(duì)象時(shí),即共享相同的數(shù)據(jù)。當(dāng)線(xiàn)程被構(gòu)造時(shí),需要的代碼和數(shù)據(jù)通過(guò)一個(gè)對(duì)象作為構(gòu)造函數(shù)實(shí)參傳遞進(jìn)去,這個(gè)對(duì)象就
34、是一個(gè)實(shí)現(xiàn)了Runnable接口的類(lèi)的實(shí)例。任何線(xiàn)程一般具有五種狀態(tài),即創(chuàng)建、就緒、運(yùn)行、阻塞、終止。(1)新建Thread thread=new Thread(2)就緒新建線(xiàn)程對(duì)象后,調(diào)用該線(xiàn)程的start()方法就可以啟動(dòng)線(xiàn)程。當(dāng)線(xiàn)程啟動(dòng)時(shí),線(xiàn)程進(jìn)入就緒狀態(tài)。此時(shí),線(xiàn)程將進(jìn)入線(xiàn)程隊(duì)列排隊(duì),等待CPU服務(wù),這表明它已經(jīng)具備了運(yùn)行條件。(3)運(yùn)行當(dāng)就緒狀態(tài)的線(xiàn)程被調(diào)用并獲得處理器資源時(shí),線(xiàn)程就進(jìn)入了運(yùn)行狀態(tài)。此時(shí),自動(dòng)調(diào)用該線(xiàn)程對(duì)象的run()方法。run()方法定義了該線(xiàn)程的操作和功能。(4)堵塞一個(gè)正在執(zhí)行的線(xiàn)程在某些特殊情況下,如被人為掛起或需要執(zhí)行耗時(shí)的輸入輸出操作時(shí),將讓出CPU并暫時(shí)中止自己的執(zhí)行,進(jìn)入堵塞狀態(tài)。在可執(zhí)行狀態(tài)下,如果調(diào)用sleep()、suspend()、wait()等方法,線(xiàn)程都將進(jìn)入堵塞狀態(tài)。堵塞時(shí),線(xiàn)程不能進(jìn)入排隊(duì)隊(duì)列,只有當(dāng)引起堵塞的原因被消除后,線(xiàn)程才可以轉(zhuǎn)入就緒狀態(tài)。(5)死亡線(xiàn)程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 烏龜購(gòu)銷(xiāo)合同范例
- led廣告租憑合同范例
- 個(gè)人承保土地合同范例
- 辦公轉(zhuǎn)讓合同范例
- 鄉(xiāng)村綠化養(yǎng)護(hù)合同范例
- 公開(kāi)招投標(biāo)合同樣本
- 加長(zhǎng)汽車(chē)出售合同范例
- 公園汽車(chē)租賃合同范例
- 葡萄酒知識(shí)試題及答案
- 買(mǎi)車(chē)預(yù)算合同范例
- 2024年度幼小銜接全套數(shù)學(xué)課件
- 淄博市2024屆高三二模歷史試題卷(含答案)
- MOOC 動(dòng)物學(xué)-華中農(nóng)業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 凈水設(shè)備驗(yàn)收方案
- 九年級(jí)英語(yǔ)單詞默寫(xiě)表(人教版)
- 邏輯門(mén)公開(kāi)課教案教學(xué)設(shè)計(jì)課件
- 現(xiàn)代漢語(yǔ)(黃伯榮、廖序東版)課件–緒論
- 第三次全國(guó)國(guó)土調(diào)查工作分類(lèi)與三大類(lèi)對(duì)照表
- 職業(yè)生涯規(guī)劃表模板
- 從龍的形象看媽祖的文化精神
- 我的小學(xué)生涯
評(píng)論
0/150
提交評(píng)論