




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