馬士兵JAVA基礎(chǔ)知識整理_第1頁
馬士兵JAVA基礎(chǔ)知識整理_第2頁
馬士兵JAVA基礎(chǔ)知識整理_第3頁
馬士兵JAVA基礎(chǔ)知識整理_第4頁
馬士兵JAVA基礎(chǔ)知識整理_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java語言基礎(chǔ)學(xué)問整理計算機語言的發(fā)展史及歷史地位第一代語言打孔機——純機器語言其次代語言匯編第三代語言(1)C、Pascal、Fortran面對過程的語言(2)C++面對過程/面對對象(3)java跨平臺的純面對對象的語言(4).NET跨平臺語言4.java語言特點(1)一種面對對象的語言(2)一種平臺無關(guān)的語言,供應(yīng)程序運行的說明環(huán)境(3)一種健壯的語言,汲取了c/c++語言的優(yōu)點,但去掉了影響程序健壯性的部分(如:指針、內(nèi)存的申請及釋放等)。二.Java程序運行機制及運行過程1.java兩種核心機制(1)Java虛擬機(JavaVirtualMachine)(2)垃圾收集機制(GarbgeCollection)2.java運行過程源程序(*.java文件)—>java編譯器—>字節(jié)碼(*.class文件)—>類裝載器—>字節(jié)碼校驗器—>說明器—>操作系統(tǒng)平臺java虛擬機java虛擬機可以理解為是一個以字節(jié)碼為機器指令的CPU。對于不同的運行平臺有不同的虛擬機。Java虛擬機機制屏蔽了底層運行平臺的差別,實現(xiàn)了“一次編譯,到處運行”。垃圾收集機制不再運用的內(nèi)存空間應(yīng)回收—垃圾收集。在c/c++語言中,由程序員負(fù)責(zé)回收無用的內(nèi)存空間。Java語言消退了由程序員負(fù)責(zé)回收無用的內(nèi)存空間的責(zé)任,它供應(yīng)了一種系統(tǒng)級線程跟蹤存儲空間的安排狀況,檢查并釋放那些可以被釋放的存儲器空間。垃圾收集在java程序運行過程中自動進(jìn)行,程序員無法精確進(jìn)行限制和干預(yù)。三.JavaApplication初步1.java源文件以“java”為擴展名。源文件的基本組成部分是類(class)。2一個源文件最多只有一個public類,其他類的個數(shù)不限,假如源文件包括一個public類,它必需按該類名命名。3.java應(yīng)用程序的執(zhí)行入口是main()方法,有固定的書寫格式: publicstaticvoidmain(String[]args){…}4.java語言嚴(yán)格區(qū)分大小寫。5.java方法由一條條語句構(gòu)成,每條語句已分號結(jié)束。6.java語言有三種注釋方式:(1)//單行注釋(2)/*…..*/多行注釋(3)/** *用于多行注釋,且可以被doc工具解析 */四.J2SE基礎(chǔ)語法1.標(biāo)識符:java對各種變量、方法和類等要素命名時運用的字符序列。(1)凡是可以自己起名字的地方都叫標(biāo)識符,都要符合標(biāo)識符的規(guī)則。(2)標(biāo)識符的命名規(guī)則: =1\*GB3①標(biāo)識符由字母、下劃線”_”、美元符”$”或數(shù)字組成。 =2\*GB3②標(biāo)識符應(yīng)當(dāng)以字母、下劃線或者美元符開頭。 =3\*GB3③java標(biāo)識符大小寫敏感,長度無限制。java標(biāo)識符選取應(yīng)當(dāng)“見名知意”且不行以和java關(guān)鍵字重復(fù)。2.關(guān)鍵字:(1)java中一些賦以特定含義,用作特地用途的字符串。(2)全部java關(guān)鍵字都是英文小寫字母。(3)goto和const雖然從未用過,但是也被留作java的關(guān)鍵字。abstractdefalutifprivatethisboleandoimplementsprotectedthrowbreakdoubleimportreturnthrowsbyteelseinstanceofpublictrycaseextendsintshortvolatilecatchfinalinterfacestaticwhileclassfinallypackagesupervoidcharfloatnewswitchnullconstfornativesynchronizedtransientcontinuegotolongstrictfp4.java常量(1)java的常量值用字符串表示,區(qū)分不同的數(shù)據(jù)類型。整形常量、實型常量、字符常量、邏輯常量、字符串常量。(2)區(qū)分字符常量和字符串常量(3)“常量”這個名字還會用在其他環(huán)境中用來表示值不變的變量。5.java變量(1)java變量是程序中最基本的存儲單元,其要素包括變量名、變量類型、作用域。(2)java中每一個變量都屬于特定的數(shù)據(jù)類型,在運用前必需對其進(jìn)行申明。(3)從本質(zhì)上講,變量其實是內(nèi)存中一小塊區(qū)域,運用變量名來訪問這塊區(qū)域,因此,每一個變量進(jìn)行運用之前,必需對其進(jìn)行申明,然后進(jìn)行賦值,這樣才可以運用。(4)heap:new出來的東西存放;(5)stack:局部變量存放在里面;(6)datasegment:靜態(tài)常量及字符串常量;(7)codesegment:存放代碼6.java變量的分類(1)按聲明的位置劃分:=1\*GB3①局部變量:方法或語句塊內(nèi)部定義的變量=2\*GB3②成員變量:方法外面、類的里面定義的變量=3\*GB3③類外面不能有變量的聲明(2)按所屬數(shù)據(jù)類型劃分:=1\*GB3①基本數(shù)據(jù)類型變量=2\*GB3②引用數(shù)據(jù)類型變量7java局部變量和成員變量方法體內(nèi)部聲明的變量(包括形參)稱為局部變量。方法體內(nèi)部是指及方法對應(yīng)的大括號內(nèi)部。在方法體外部,類體內(nèi)部聲明的變量是成員變量。8.數(shù)據(jù)類型的劃分(1)基本數(shù)據(jù)類型:整數(shù)類型(byte、int、short、long)、浮點類型(float)、字符型(char)、布爾型(boolean)(2)引用數(shù)據(jù)類型:類(class)、接口(interface)、數(shù)組。9.邏輯型boolean(1)boolean數(shù)據(jù)類型適合邏輯運算,一般用于流程的限制。(2)boolean數(shù)據(jù)類型只允許取值為true或false,不行以用0或者非0代替true或者false.10.字符型char(1)char型數(shù)據(jù)用來表示通常意義上的”字符”。(2)字符常量為用單引號括起來的單個字符。(3)java字符實行Unicode字符編碼,每個字符占據(jù)兩個字節(jié),因此可以采納十六進(jìn)制編碼表示。(4)java語言還允許運用轉(zhuǎn)義字符’\’來將其后的字符轉(zhuǎn)化為其他的含義。(5)2進(jìn)制、8進(jìn)制、16進(jìn)制的轉(zhuǎn)化。11.整數(shù)類型(1)java各整數(shù)類型有各自的字段長度和表數(shù)范圍,其不受詳細(xì)操作系統(tǒng)的影響,以保證java程序的可移植性。(2)java語言整形常量的三種表示形式:=1\*GB3①十進(jìn)制整數(shù);=2\*GB3②八進(jìn)制整數(shù):要求以0開頭;=3\*GB3③十六進(jìn)制整數(shù):要求以0x或者0X開頭java語言整形常量默認(rèn)的類型為int,聲明long型常量時后面須要加上”l”或者”L”;類型占用內(nèi)存空間表數(shù)范圍byte1字節(jié)-128~127short2字節(jié)-2^15~2^15-1int4字節(jié)-2^31~2^31-1long8字節(jié)-2^63~2^63-112.浮點類型(1)及整形類似,浮點類型也有各自的字段長度和表數(shù)范圍,不受平臺影響。(2)java浮點類型常量有兩種表示方法:十進(jìn)制形式和科學(xué)計數(shù)法形式(3)java浮點型默認(rèn)的常量類型為double,聲明為float時須要后面加上”f”或者”F”;類型占用內(nèi)存空間表數(shù)范圍float4字節(jié)-3.403E38~3.403E38double8字節(jié)-1.798E308~1.798E30813.基本數(shù)據(jù)類型轉(zhuǎn)化(1)boolean類型不行以轉(zhuǎn)化為其他的數(shù)據(jù)類型(2)容量小的數(shù)據(jù)類型自動轉(zhuǎn)化為容量大的數(shù)據(jù)類型。=1\*GB3①Byte.short.char->int->long->float->double=2\*GB3②byteshortchar三者不會相互的轉(zhuǎn)化,計算時三者都先轉(zhuǎn)化為int型進(jìn)行計算(3)容量大的數(shù)據(jù)類型轉(zhuǎn)化為容量小的數(shù)據(jù)類型時,要加上強制類型轉(zhuǎn)化符,這樣可能造成精度降低或者溢出,運用時要特別留意。(4)有多種數(shù)據(jù)庫類型進(jìn)行計算時,應(yīng)當(dāng)將全部的數(shù)據(jù)類型轉(zhuǎn)化為容量最大的那種數(shù)據(jù)類型,在進(jìn)行計算。(5)實型默認(rèn)為double;整形默認(rèn)為int。14.運算符(1)算術(shù)運算符:+-*/%++--(2)關(guān)系運算符:><>=<=!=(3)邏輯運算符:!|&&&||(4)位運算符:&!|^>><<>>>(5)賦值運算符:=(6)擴展賦值運算符:+=-=/=*=(7)字符串連接運算符:+15.賦值運算符和擴展賦值運算符:(1)當(dāng)”=”兩側(cè)數(shù)據(jù)類型不一樣時,可以運用默認(rèn)類型轉(zhuǎn)化或者強制類型轉(zhuǎn)化。(2)可以將整形常量干脆賦值給byteshortchar,可以不運用強制類型轉(zhuǎn)化符,只要不超過其表數(shù)范圍即可。16.字符串連接符:(1)兩側(cè)的操作數(shù)只要有一個是字符串類型,則會默認(rèn)將另一個自動轉(zhuǎn)化為字符串類型然后再進(jìn)行運算。(2)當(dāng)進(jìn)行打印時,無論是什么類型都會被轉(zhuǎn)化為字符串類型進(jìn)行打印。17.表達(dá)式(1)表達(dá)式是符合肯定語法規(guī)則的運算符和操作數(shù)的序列。(2)表達(dá)式的值是指對操作數(shù)進(jìn)行運算得到的結(jié)果(3)表達(dá)式的類型是指表達(dá)式結(jié)果的數(shù)據(jù)類型(4)應(yīng)當(dāng)依據(jù)運算符從高到低的的優(yōu)先級依次進(jìn)行運算(5)優(yōu)先級相同的應(yīng)當(dāng)依據(jù)事先約定的結(jié)合方向進(jìn)行運算18.三目條件運算符(1)語法格式:X?Y:Z(2)x為boolean類型,先計算x的值,假如x的值為真,則整個表達(dá)式的值為y;反之,整個表達(dá)式的值為z19.if語句、for語句、while語句、dowhile語句(1)break語句:用于終止某個語句塊的結(jié)束,用于循環(huán)語句體中,可以強制退出循環(huán)。(2)continue語句:用于循環(huán)語句中,用于終止某次循環(huán)過程,跳過循環(huán)體中continue未執(zhí)行的循環(huán),干脆進(jìn)行下一次的循環(huán)。(3)switch語句:=1\*GB3①當(dāng)心case穿透,舉薦運用break語句=2\*GB3②多個case可以合并到一起=3\*GB3③default可以省略,但是不舉薦省略=4\*GB3④java中switch只能探測到int類型的值20.方法(1)java的方法類似及其他語言的函數(shù),是一段完成特定功能的代碼片段,聲明格式:[修飾符1修飾符2…]返回值類型方法名{形式參數(shù)列表}{ Java語句….}(2)形式參數(shù):在方法被調(diào)用的時候用于接收外部輸入的數(shù)據(jù)。(3)實參:調(diào)用方法時實際傳給方法的數(shù)據(jù)。(4)返回值:方法被調(diào)用完后返還給調(diào)用他的環(huán)境的數(shù)據(jù)。(5)返回值類型:事先約定返回值的數(shù)據(jù)類型,假如沒有返回值,則肯定要給出void。(6)java語言中運用下述形式調(diào)用方法:對象名.方法名(實參列表)。(7)實參的數(shù)目、數(shù)據(jù)類型和次序必需和所調(diào)用方法的形參列表相匹配。(8)return終止方法的執(zhí)行并且指定返回數(shù)據(jù)類型。(9)java中函數(shù)調(diào)用中傳遞參數(shù)時,遵循值傳遞原則:基本類型傳遞的是數(shù)據(jù)值的本身,引用類型傳遞的是對對象的引用,而不是對象本身。21.遞歸調(diào)用:在方法執(zhí)行過程中出現(xiàn)方法本身的調(diào)用。五.面對對象的設(shè)計思想1.從現(xiàn)實世界中客觀存在的事物動身來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造的過程中盡可能的運用人類的自然思維方式。2.面對對象更加強調(diào)人類在日常的思維邏輯中常常采納的思想方法和原則,如抽象、分類、聚合、多態(tài)、繼承等。3.對象用計算機語言對問題域中的事物的描述,對象通過屬性(attribute)和方法(method)來對應(yīng)事物所具有的靜態(tài)屬性和動態(tài)屬性。4.類是用于描述同一類型對象的一個抽象概念,類中定義了這一類對象因具有的靜態(tài)和動態(tài)屬性。5.類可以看成是一類對象的模版,對象可以看作是該類的一個詳細(xì)實例。六.類(對象)之間的關(guān)系(1)關(guān)聯(lián)關(guān)系(2)繼承關(guān)系(一般和特殊)如:XXX是一種XXX(3)多態(tài)關(guān)系(4)聚合關(guān)系(整體和部分)(5)實現(xiàn)關(guān)系七.java及面對對象(1)對象是java程序的核心,在java中“萬事萬物皆對象”。(2)對象可以看作是靜態(tài)屬性(成員變量)和動態(tài)屬性(方法)的封裝體。(3)類是用來創(chuàng)建同一類型對象的“模版”,在一個類中定義該類所因具有的成員變量和方法。(4)j2sdk供應(yīng)了許多類給編程人員,編程人員也可以自己定義類。(5)成員變量=屬性方法=函數(shù)八.為什么運用對象?1.面對對象編程—一組對象相互協(xié)作通過溝通完成特定功能。2.對象都有對外服務(wù)的接口,通過繼承可以復(fù)用。3.對象隱藏內(nèi)部服務(wù)的實現(xiàn),通過聚合可以復(fù)用。4.面對對象可以使我們達(dá)到這些年苦苦追求的境界。5.組件—比對象更高層次上的抽象。九.面對對象1.java類的定義(1)類的定義主要有成員變量和方法這兩個方面。(2)聲明成員變量的格式:[<modifiers>]type<attr_name>[=defaultValue]如:privateintid;privateintmoney=20;(3)聲明方法的格式:[<modifiers>]<modifiers><return_type><name>[<argu_list>]{[<statements>]}如:publicintgetAge(){returnage;}2.成員變量(1)成員變量可以是java數(shù)據(jù)類型中任何一種數(shù)據(jù)類型(基本數(shù)據(jù)類型和引用數(shù)據(jù)類型)。(2)在定義成員變量時可以對其進(jìn)行初始化,假如對其不進(jìn)行初始化,則java運用默認(rèn)的初始化值。(3)成員變量的整個范圍為整個類體。成員變量類型byteshortintlongfloatdoublebooleanchar全部引用類型取值0000L0.0F0.0Dfalse‘\u0000’null3.引用(1)java語言中除了基本的數(shù)據(jù)類型之外其余的都稱之為引用類型。(2)java中的對象是通過引用對其進(jìn)行操作的。4.如何在內(nèi)存中區(qū)分類和對象?(1)類是靜態(tài)概念,在代碼區(qū)。(2)對象是new出來的,位于堆內(nèi)存。類的每個成員變量在不同的對象中都有不同的值(除靜態(tài)變量),而方法只有一份,只在執(zhí)行的時候占據(jù)內(nèi)存。5.對象的創(chuàng)建和運用(1)必需運用new關(guān)鍵字創(chuàng)建對象。(2)運用對象(引用).成員變量或者引用對象的成員變量。(3)運用對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法。(4)同一類的每個對象有不同的變量存儲空間。(5)同一類的每個對象共享該類的方法。(6)非靜態(tài)方法是針對每個對象進(jìn)行調(diào)用。6.構(gòu)造方法(構(gòu)造函數(shù))(1)運用new+構(gòu)造方法創(chuàng)建一個新的對象。(2)構(gòu)造函數(shù)是一個定義在Java類中用來初始化對象的函數(shù)。(3)構(gòu)造函數(shù)及類同名且沒有返回值。(4)創(chuàng)建對象時,運用構(gòu)造函數(shù)初始化對象的成員變量。(5)當(dāng)沒有指定構(gòu)造函數(shù)時,編譯器會自動給類添加形如類名(){}的構(gòu)造函數(shù)。7.約定俗成的命名規(guī)則(1)類名的首寫字母大寫(2)變量名和方法名的首寫字母小寫(3)運用駝峰標(biāo)識8.方法的重載(1)方法的重載是指在一個類中可以有相同的名字,但是參數(shù)不同的多個方法。調(diào)用時會依據(jù)不同的參數(shù)表選擇相應(yīng)的方法。9.構(gòu)造方法的重載(1)及一般方法一樣,構(gòu)造方法也有重載。10.this關(guān)鍵字(1)在類的方法定義中運用this關(guān)鍵字代表運用該方法的對象的調(diào)用。(2)當(dāng)必需指出當(dāng)前運用方法的對象是誰時要運用this關(guān)鍵字。(3)有時運用this關(guān)鍵字可以處理方法中的成員變量和參數(shù)重名的狀況。(4)this可以看作是一個變量,他的值是當(dāng)前對象的引用。11.static關(guān)鍵字(1)在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次運用時被初始化,對于該類的全部對象來說static成員變量只有一份。(2)用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時,不會將對象的引用傳遞給它,所以在static方法中不行以訪問非static方法。(3)靜態(tài)方法不再是針對某個對象調(diào)用,所以不能訪問非靜態(tài)成員。(4)可以通過對象引用或者類名(不需實例化)訪問靜態(tài)成員。12.package和import語句(1)為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問題,java引入包(package)機制,供應(yīng)類的多重類命名空間。(2)package語句作為java的第一條語句,指明該文件中類所在的包。(若缺省該句,則為無名包)。如:packagepkg1[.pkg2[…]](3)java編譯器把包對應(yīng)于文件系統(tǒng)的書目管理,package語句中用”.”來指明包(書目)的層次。(4)假如將一個類打包,運用該類時,須要運用該類的全名,java編譯器才會找到該類.(5)也可以運用import在文件開頭引入要運用的類。(6)可以不須要運用import語句干脆引入java.lang的包中的類。(7)假如要將一個類放入包中,在這個類原文件第一句須要寫package。(8)必需保證該類的class文件位于正確的書目下。=1\*GB3①該類的源碼可能會產(chǎn)生影響=2\*GB3②刪除或者轉(zhuǎn)移到另外的書目(9)另外的類想訪問的話=1\*GB3①寫全名=2\*GB3②引入*詳細(xì)類名=3\*GB3③訪問位于同一包中的類不須要引入(10)必需class文件的最上層包的父書目位于classpath下(11)執(zhí)行一個類須要寫全包名13.j2sdk主要包的介紹(1)java.lang—包含java語言的一些核心類,String,Math,Integer,System,Thread,供應(yīng)常用的類。(2)java.wat—包含了構(gòu)成抽象窗口工具集(abstractwindowtookits)的多個類,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)。(3)java.applet—包含applet運行所須要的一些類。(4)—包含一些及網(wǎng)絡(luò)相關(guān)操作的類。(5)java.io—包含多種能供應(yīng)輸入/輸出功能的類。(6)java.util—包含好用的工具類,如定義系統(tǒng)特性,運用及日期日歷相關(guān)的函數(shù)。(7)打包的格式j(luò)ava–cvfxx.jar*.*14.類的繼承及權(quán)限限制(1)java中運用extends關(guān)鍵字來實現(xiàn)類的繼承機制,語法規(guī)則如下:<modifier>class<name>[extends<superclass>]{…}(2)通過繼承,子類自動擁有基類全部的成員(成員變量和方法)。(3)java只支持單繼承,不支持多繼承。=1\*GB3①一個子類只能有一個基類,一個基類可以派生出多個子類。(4)java權(quán)限修飾符public,private,protected置于類的成員定義之前,用來限定其他對象對該類對象成員的訪問權(quán)限。修飾符類內(nèi)部同一包子類任何地方privateYesdefaultYesYesprotectedYesYesYespublicYesYesYesYes對于class的權(quán)限修飾只可以用public和default=1\*GB3①public類可以在任何地方都被訪問。=2\*GB3②default只可以被同一個包中的類訪問。15.方法的重寫(1)在子類中可以依據(jù)須要對于從基類中繼承來的方法進(jìn)行重寫。(2)重寫方法必需和被重寫方法具有相同的名稱,參數(shù)列表和返回值類型。(3)重寫方法不能運用比被重寫方法更嚴(yán)格的訪問權(quán)限。16.super關(guān)鍵字:在java類中運用super關(guān)鍵字來引用基類的成分。17.繼承中的構(gòu)造方法(1)子類的構(gòu)造過程中必需調(diào)用基類的構(gòu)造方法。(2)子類可以在自己的構(gòu)造方法中運用super(argu_list)來調(diào)用基類的構(gòu)造方法。=1\*GB3①運用this(argu_list)調(diào)用本類中另外的構(gòu)造方法。=2\*GB3②假如調(diào)用super,必需寫在基類的構(gòu)造方法的第一行。(3)假如子類的構(gòu)造方法中沒有顯示的調(diào)用基類的構(gòu)造方法,則系統(tǒng)默認(rèn)的調(diào)用基類無參的構(gòu)造方法。(4)假如子類中既沒有顯示的調(diào)用基類的構(gòu)造方法,而基類中又沒有無參的構(gòu)造方法,則編譯出錯。18.Object類(1)Object類是java中全部類的根基類。(2)假如在類的聲明中未運用extends關(guān)鍵字來指明其基類,則默認(rèn)基類為Object類。19.toString方法(1)Object類中定義類publicStringtoString()方法,其返回值為String類型,描述當(dāng)前的對象的有關(guān)信息。(2)在進(jìn)行String及其他數(shù)據(jù)類型的連接操作時,將自動調(diào)用該類對象的toString()方法。(3)可以依據(jù)須要在用戶自定義類型中重寫toSring()方法。20.equals()方法—Object類中定義(1)publicBooleanequals(Objectobj)供應(yīng)對象是否相等的邏輯。(2)Object的equals方法定義為:x.equals(y)當(dāng)x和y是同一對象的應(yīng)用時返回true否則返回false。(3)j2sdk供應(yīng)了一些類,如String,Date等,重寫了Object類中的equals方法,調(diào)用這些類的equals方法,x.equals(y),當(dāng)x和y所引用的對象是同一類的對象且屬性內(nèi)容相等時(并不肯定是相同對象),返回true否則返回false。(4)可以依據(jù)須要在用戶自定義類型中重寫equals()方法。21.對象轉(zhuǎn)型(casting)(1)一個基類的引用類型變量可以指向其子類對象。(2)一個基類的引用不行以訪問子類對象新增加的成員(成員變量和方法)。(3)可以運用引用變量Instanceof類名來推斷該引用型變量所指向的對象是否屬于該類或者該類的子類。(4)子類的對象可以當(dāng)作基類的對象來運用稱作向上轉(zhuǎn)型(upcasting),反之稱為向下轉(zhuǎn)型(downcasting)。22.動態(tài)綁定;在執(zhí)行期間而非編譯期間推斷所引用對象的實際類型,依據(jù)其實際類型來調(diào)用相應(yīng)的方法。23.抽象類(1)用abstact類來修飾一個類時,這個類叫做抽象類,用abstract來修飾一個方法時,這個方法叫做抽象方法。(2)含有抽象方法的類必需聲明為抽象類,抽象類必需被繼承,抽象方法必需被重寫。(3)抽象類不能被實例化。(4)抽象方法只須要聲明,不須要實現(xiàn)。24.final關(guān)鍵字(1)final變量的值不行以變更:final的成員變量和局部變量(形參)。(2)final方法不能被重寫。(3)final類不行以被繼承。25.接口(1)接口(interface)是抽象方法和常量值的定義的集合。(2)從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含方法和常量的定義,而沒有方法和變量的實現(xiàn)。(3)多個無關(guān)的類可以實現(xiàn)同一個接口。(4)一個類可以實現(xiàn)多個無關(guān)的接口。(5)及繼承關(guān)系類似,接口及實現(xiàn)類之間存在多態(tài)性。(6)接口中聲明屬性默認(rèn)為publicstaticfinal的,也只能是publicstaticfinal的。(7)接口中只能定義抽象方法,而這些方法默認(rèn)為public的,也只能是public。(8)接口可以繼承其他接口,并添加新的屬性和抽象方法。十.異樣處理1.異樣的概念(1)java異樣是java供應(yīng)的用于處理程序中錯誤的一種機制。(2)所謂錯誤是指在程序運行過程中發(fā)生的一些異樣事務(wù)。(3)設(shè)計良好的程序,應(yīng)當(dāng)在異樣發(fā)生時供應(yīng)處理這些錯誤的方法,使得程序不會因為異樣的發(fā)生而阻斷或者產(chǎn)生不行預(yù)見的結(jié)果。(4)java程序執(zhí)行過程中假如出現(xiàn)異樣事務(wù),可以生成一個異樣類的對象,該異樣事務(wù)封裝了異樣的信息,并將被提交給java運行時系統(tǒng),這個過程稱作拋出(throw)異樣。(5)當(dāng)java運行時系統(tǒng)接收到異樣對象時,會找尋能處理這一異樣的代碼,并把當(dāng)前異樣對象交給其處理,這一過程稱作捕獲(catch)異樣。2.異樣的分類(1)ThrowableExceptionErrorRuntimeException(2)Error:錯誤,由java虛擬機生成拋出,包括動態(tài)連接失敗,虛擬機錯誤等,程序不對其做處理。(3)Exception:全部異樣類的父類,其子類對應(yīng)了各種各樣的異樣事務(wù),一般須要用戶顯示的聲明或者捕獲。(4)RuntimeException:一類特殊的異樣,其產(chǎn)生比較頻繁,處理麻煩,假如顯示的聲明或者捕獲對于程序的可讀性和運行效率影響很大,因此由系統(tǒng)自動檢測并將把他們交給缺省的異樣處理程序。(用戶不必對其處理)Exceptioninjava.langClassNotFoundExceptionIOExceptionInterruptedExceptionRuntimeExceptionArithmeticExceptionNullPointerExceptionIndexOutofBoundsExceptionArrayIndexOutofBoundsExceptionStringIndexOutofBoundsException3.異樣的捕獲和處理(1)try代碼片段包含可能產(chǎn)生例外的代碼。(2)try代碼片段后跟一個或者多個catch代碼段。(3)每個catch代碼段聲明其能處理的一個特定異樣的類型并供應(yīng)處理該異樣的方法。(4)當(dāng)異樣發(fā)生時,程序會終止當(dāng)前的流程,依據(jù)獲得異樣的類型去執(zhí)行相應(yīng)的catch代碼段。(5)finally段的代碼無論發(fā)生異樣及否都會執(zhí)行。4.try語句(1)try{..}語句指定一段代碼,該段代碼就是一次捕獲并處理異樣的例外代碼。(2)在執(zhí)行過程中,該代碼可能會產(chǎn)生并拋出一種或者幾種類型的異樣對象,它后面的catch語句要分別對這些異樣做對應(yīng)的異樣處理。(3)假如沒有例外出現(xiàn),則catch的代碼片段都將被略過不執(zhí)行。5.catch語句(1)在catch語句塊中是對異樣進(jìn)行處理的代碼,每個try語句可以伴隨一個或者多個catch語句,用于處理產(chǎn)生的不同類型的異樣對象。(2)在catch中聲明的異樣對象(catch(SomeExceptione))封裝了異樣事務(wù)發(fā)生的信息,在catch語句塊中可以運用這個對象的方法來獲得這些信息。(3)getMessage()方法:用來得到有關(guān)異樣事務(wù)的信息。printStackTrace()方法:用來跟蹤異樣事務(wù)發(fā)生時執(zhí)行堆棧的內(nèi)容。finally語句finally語句為異樣處理供應(yīng)了統(tǒng)一的出口,使得在限制流程在轉(zhuǎn)到其他程序的其他部分以前,能夠?qū)Τ绦虻臓顟B(tài)做出統(tǒng)一的管理。無論try所指定的程序語句塊是否拋出異樣,finally所指定的語句塊都要被執(zhí)行。通常在finally語句塊中可以進(jìn)行資源的清除,如:關(guān)閉打開的文件,刪除臨時的文件等。java的異樣處理機制使得異樣事務(wù),沿著被調(diào)用的依次往前找尋,只要找到符合該異樣種類的異樣處理事務(wù)。運用自定義異樣通過繼承java.lang.Exception類來聲明自己的異樣類。在方法適當(dāng)?shù)奈恢枚x異樣類的實例,并用throw拋出異樣。在方法的聲明部分用throws語句聲明該方法可能要拋出的異樣。重寫方法要拋出及原方法一樣的異樣或者不拋出異樣。十一.數(shù)組數(shù)組的概述(1)數(shù)組可以看成是多個相同數(shù)據(jù)類型的組合,對這些數(shù)據(jù)的統(tǒng)一管理。(2)數(shù)組變量屬引用類型,數(shù)組也可看成是對象,數(shù)組中的每個成員都相當(dāng)于對象中的成員變量。(3)數(shù)組中的數(shù)據(jù)類型可以是任何的數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。2.一維數(shù)組(1)一維數(shù)組的聲明方式:typevar[]或者type[]var(2)java語言中聲明數(shù)組時不能指定數(shù)組的長度(數(shù)組中元素的個數(shù))。3.數(shù)組對象的創(chuàng)建(1)java語言中運用new關(guān)鍵字創(chuàng)建數(shù)組對象,格式為:數(shù)組名=new數(shù)組元素類型[數(shù)組元素個數(shù)](2)元素為引用數(shù)據(jù)類型的數(shù)組中的每一個元素都須要對其進(jìn)行實例化。4.數(shù)組的動態(tài)初始化數(shù)組的定義及數(shù)組的元素安排空間和賦值的操作分開進(jìn)行5數(shù)組的靜態(tài)初始化定義數(shù)組的同時就為數(shù)組安排空間和賦值。6數(shù)組元素的默認(rèn)初始化數(shù)組是引用類型,它的元素相當(dāng)于類的成員變量,因此數(shù)組安排空間后,每個元素也被依據(jù)成員變量的規(guī)則被隱式初始化7數(shù)組元素的引用定義并用new關(guān)鍵字為其安排空間后,才可以引用數(shù)組中的每個元素,數(shù)組元素的引用方式為:=1\*GB3①arrayName[index]:index為數(shù)組元素的下標(biāo),可以是整形常量或者整形表達(dá)式。=2\*GB3②數(shù)組元素下標(biāo)從0起先:長度為n的數(shù)組合法下標(biāo)取值范圍為:0~n-1每個數(shù)組都有一個length屬性指明其長度。8.二維數(shù)組(1)可以看作是數(shù)組的數(shù)組。(2)java中多維數(shù)組的聲明和初始化都應(yīng)當(dāng)從高維到低維的依次進(jìn)行。(3)靜態(tài)初始化和動態(tài)初始化9.數(shù)組的拷貝(1)運用java.lang.System的靜態(tài)方法,publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)(2)可以用于數(shù)組src從地srcPos項元素起先的length個元素拷貝到目標(biāo)數(shù)組從destPos項起先的length個位置。(3)假如源數(shù)據(jù)數(shù)目超過目標(biāo)數(shù)組邊界會拋出IndexOutofBoundsException異樣。十二.常用類String類java.lang.String類代表不行變的字符序列?!癤XXX”為該類的一個對象。Strig類的常見構(gòu)造方法:String(Stringoriginal)創(chuàng)建一個String對象為original的拷貝String(char[]value)用一個字符數(shù)組創(chuàng)建一個String對象String(char[]value,intoffset,intcount)用一個字符數(shù)組從offset起先的count個字符序列創(chuàng)建一個String對象。publiccharcharAt(intindex)返回字符串中第index個字符publicintlength()返回字符串的長度publicintindexOf(Stringstr)返回字符串中出現(xiàn)str的第一個位置publicintindexOf(Stringstr,intformatIndex)返回從字符串中formatIndex起先出現(xiàn)str的第一個位置publicbooleanequalsIgnoreCase(Stringanother)比較字符串及another是否一樣(忽視大小寫)publicStringreplace(charoldChar,charnewChar)在字符串中用newChar代替oldChar字符publicbooleanstartsWith(Stringprefix)推斷字符串是否以prefix開頭publicbooleanendsWith(Stringsuffix)推斷字符串是否以suffix結(jié)尾publicStringtoUpperCase()返回一個字符串為該字符串的大寫publicStringtoLowerCase()返回一個字符串為該字符串的小寫publicStringsubstring(StringbeginIndex)返回該字符串從beginIndex起先到結(jié)尾的子字符串publicStringsubstring(StringbeginIndex,StringendIndex)返回該字符串從beginIndex起先到endIndex結(jié)束的子字符串publicStringtrim()返回將該字符串去掉開頭和結(jié)尾空格后的字符串。(4)靜態(tài)重載方法:publicstaticStringvalueOf()可以將基本類型數(shù)據(jù)轉(zhuǎn)化為字符串方法publicString[]split(Stringregex)可以將一個字符串依據(jù)指定的分隔符分隔,返回分隔后的字符串?dāng)?shù)組。StringBuffer類java.lang.StringBufffer代表可變的字符序列。StringBuffer和String類似,但StringBuffer可以對其字符序列進(jìn)行變換。StringBuffer類的常見構(gòu)造方法;StringBuffer()創(chuàng)建一個不包含字符序列的”空”的StringBuffer對象。StringBuffer(Stringstr)創(chuàng)建一個StringBuffer對象,包含及String對象str相同的字符序列。重載方法publicStringBufferappend(…)可以為該StringBuffer對象添加字符序列,返回添加后的該StringBuffer對象的引用。重載方法publicStringBufferinsert(…)可以為該StringBuffer對象在指定的位置插入字符序列,返回修改后的該StringBuffer對象的引用。方法publicStringBufferdelete(intstart,intend)可以刪除從start起先到end-1為止的一段字符序列,返回修改后的該StringBuffer對象的引用。和String類含義類似的方法publicintindexOf(Stringstr)publicintindexOf(Stringstr,StringformatIndex)publicStringsubstring(intstart)publicStringsubstring(intstart,intend)publicintlength()方法publicStringBufferreverse()用于將字符序列逆序,返回修改后的該StringBuffer對象的引用。基本數(shù)據(jù)類型包裝類包裝類(如Integer,Double等)這些類封裝了一個基本數(shù)據(jù)類型的數(shù)值,并為其供應(yīng)了一系列的操作。以java.lang.Integer為例:構(gòu)造方法Integer(intvalue)Integer(Strings)以下方法以java.lang.Integer為例:publicstaticfinalintMAX_VALUE最大的int型整數(shù)publicstaticfinalintMIN_VALUE最小的int型整數(shù)publiclonglongValue()返回封裝數(shù)據(jù)類型的long型值publicdoubledoubleValue()返回封裝數(shù)據(jù)類型的double型值publicintdoubleValue()返回封裝數(shù)據(jù)類型的int型值publicstaticintparseInt(Strings)throwsNumberFormatException將字符串解析成Int型數(shù)據(jù),返回該數(shù)據(jù)publicstaticIntegervalueOf(Strings)throwsNumberFormatException返回Integer對象,其中封裝的整形數(shù)據(jù)為字符串s所表示。Math類java.lang.Math供應(yīng)了一系列方法用于科學(xué)計算,其方法的參數(shù)和返回值類型一般為double型。abs肯定值acos,asin,atan,cos,sin,tansqrt平方根pow(doublea,doubleb)a的b次冪log自然對數(shù)expe為底指數(shù)max(doublea,doubleb)min(doublea,doubleb)random()返回0.0到1.0的隨機數(shù)longround(doublea)double型的數(shù)據(jù)轉(zhuǎn)化為Long型(四舍五入)toDegrees(doubleangrad)弧度轉(zhuǎn)化為角度toRadians(doubleangdeg)角度轉(zhuǎn)化為弧度File類java.io.File代表系統(tǒng)文件名(路徑和文件名)。File類的常見構(gòu)造方法:publicpathname)以pathname為路徑創(chuàng)建File對象,假如,pathname是相對路勁,則默認(rèn)的當(dāng)前路徑在系統(tǒng)屬性user,dir中存儲。publicparent,Stringchild)以parent為父路徑,以child為子路徑創(chuàng)建File對象。File的靜態(tài)屬性Stringseparator存儲了當(dāng)前系統(tǒng)路徑的分隔符。通過File對象可以訪問文件的屬性:publicbooleancanRead()publicbooleancanWrite()publicbooleanexists()publicbooleanisDirectory()publicbooleanisFile()publicbooleanisHidden()publiclonglastModified()publiclonglength()publicStringgetName()publicStringgetPath()通過File對象創(chuàng)建空文件或書目(在該對象所指的文件或者書目不存在的狀況下)publicbooleancreateNewFile()throwsIOExceptionpublicbooleandelete()publicbooleanmkdir()publicbooleanmkdirs()//創(chuàng)建在路徑中的一系列書目java.lang.Enum枚舉類型枚舉類型:=1\*GB3①只能夠取特定值中的一個。=2\*GB3②運用enum關(guān)鍵字=3\*GB3③是java.lang.Enum類型十三.容器j2sdk所供應(yīng)的容器的API位于java.util包中。容器API圖構(gòu)如下:Collection(interface)Set(interface)List(interface)HashSetLinkedListArrayListMapHashMapcollection接口定義了存取一組對象的方法,其子接口set和List定義了存儲方式。set中的數(shù)據(jù)對象無序且不重復(fù)。list中的數(shù)據(jù)對象有序且可以重復(fù)。Map接口定義了存儲“鍵(Key)—值(value)映射對”的方法。Collection接口中定義的方法:intsize();booleanisEmpty();voidclear();booleancontains(Objectelement)booleanadd(Objectelement)booleanremove(Objectelement)Iteratoriterator()booleancontainsAll(Collectionc)booleanaddAll(Collectionc)booleanremoveAll(Collectionc)booleanretainAll(Collectionc)Object[]toArray()容器類對象在調(diào)用remove,contains等方法時須要比較對象是否相等,這會涉及到對象類型的equals方法和hashCode方法;對于自定義的類型,須要重寫equals方法和hashCode方法以實現(xiàn)自定義的對象相等的規(guī)則。相等的對象應(yīng)當(dāng)具有相等的hashcodes。Iterator接口(1)全部實現(xiàn)Collection接口的容器類都有一個iterator方法用以返回一個實現(xiàn)了Iterator接口的對象。(2)Iterator對象稱為迭代器,用以便利實現(xiàn)對容器內(nèi)部元素的遍歷。(3)Iterator接口定義的方法:booleanhasNext()推斷游標(biāo)右邊是否有元素Objectnext()返回游標(biāo)右邊的元素并且將游標(biāo)移動到下一個位置Voidremove()刪除游標(biāo)左邊的元素,在執(zhí)行完next之后此操作只可以執(zhí)行一次(4)Iterator對象的remove方法是在迭代過程中刪除元素的唯一的平安方法。8.增加的for循環(huán)(1)增加的for循環(huán)對于遍歷collection和array的時候特殊便利。(2)缺陷: =1\*GB3①數(shù)組:不能便利的訪問下標(biāo)值。 =2\*GB3②集合:及運用Iterator相比,不能便利刪除集合中的內(nèi)容,在內(nèi)部也是調(diào)用Iterato??偨Y(jié):除了簡潔遍歷并讀出其中的內(nèi)容外,不建議運用增加for。set接口(1)set接口是collection的子接口,set接口沒有供應(yīng)額外的方法,但是實現(xiàn)set接口的容器類中的元素是沒有有依次的,而且不行以重復(fù)。(2)set容器可以及數(shù)學(xué)中的“集合”概念相對應(yīng)。(3)j2sdkAPI中所供應(yīng)的set容器類有HashSet,TreeSet等。9.List接口(1)List接口是collection的子接口,實現(xiàn)List接口的容器類中的元素是有依次的并且可以重復(fù)的。(2)List容器中的元素都對應(yīng)一個整數(shù)型的序號記載其在容器中的位置,可以依據(jù)序號存取容器中的元素。(3)j2sdk所供應(yīng)的List容器類有LinkedList,ArrayList等。 Objectget(intindex) Objectset(intindex,Objectelement)Objectremove(intindex)intindexOf(Objecto)intlastIndexOf(Objecto)10類java.util.Collections供應(yīng)了一些靜態(tài)方法實現(xiàn)了基于List容器的一些常用算法。voidsort(List)對List容器內(nèi)的元素排序voidshuffle(List)對List容器內(nèi)的元素進(jìn)行隨機排列voidreverse(List)對List容器內(nèi)的元素進(jìn)行逆序排列voidfill(List,Object)用一個特定的對象重寫整個容器voidcopy(Listdest,Listsrc)將srcList容器的內(nèi)容拷貝到destList容器中intbinarySearch(List,Object)對于依次的List容器,采納折半查找法查找特定的對象。11.Comparable接口(1)全部可以排序的類都實現(xiàn)了java.lang.Comparable接口,Comparable接口中只有一個方法,publicintcompareTo(Objectobj)該方法:返回0表示this==obj返回正數(shù)表示this>obj返回負(fù)數(shù)表示this<obj(2)實現(xiàn)Comparable接口的類通過實現(xiàn)compareTo()方法從而確定該類對象的排序方式。12.如何選擇數(shù)據(jù)結(jié)構(gòu)衡量標(biāo)準(zhǔn):讀的快慢和改的快慢(1)Array讀的快改的慢(2)Linked讀的慢改的快(3)Hash兩者之間13.Map接口(1)實現(xiàn)Map接口的類用來存儲鍵值對。(2)Map接口實現(xiàn)的類有HashMap和TreeMap。(3)Map類中存儲的鍵值對通過鍵來標(biāo)識,所以鍵值不行以重復(fù)。14.Auto-boxing/unboxing(1)在合適的時候自動打包解包=1\*GB3①自動將基礎(chǔ)類型轉(zhuǎn)化為對象=2\*GB3②自動將對象轉(zhuǎn)化為基礎(chǔ)類型15.JDK1.5泛型(1)起因:JDK1.4以前類型不清晰=1\*GB3①裝入集合中的類型都被當(dāng)作Object對待,從而失去自己的實際類型。=2\*GB3②從集合中取出時往往須要轉(zhuǎn)型,效率低,簡潔產(chǎn)生錯誤。(2)解決方法:=1\*GB3①在定義集合的時候同時定義集合中對象的類型。=2\*GB3②可以在定義Collection時指定。=3\*GB3③也可以在循環(huán)時運用Iterator指定。(3)好處:增加程序的可讀性和穩(wěn)定性。十四.流在java程序中,對于數(shù)據(jù)的輸入和輸出操作以流(stream)方式,將將j2sdk供應(yīng)了各種各樣的流類,用以獲得不同的數(shù)據(jù),程序中通過標(biāo)準(zhǔn)的方法輸入或者輸出數(shù)據(jù)。輸入/輸出流的分類java.io包中定義了多個流類型(類或抽象類)來實現(xiàn)輸入/輸出功能,可以從不同的角度對其進(jìn)行分類。依據(jù)數(shù)據(jù)流的方向不同分為輸入流和輸出流。依據(jù)數(shù)據(jù)處理單位不同分為字節(jié)流和字符流。依據(jù)功能不同劃分為節(jié)點流和處理流。J2sdk所供應(yīng)的全部流類型位于java.io包內(nèi),分別繼承自以下四種抽象流類型。字節(jié)流字符流輸入流InputStreamReader輸出流OutputStreamWriter節(jié)點流和處理流節(jié)點流為可以從一個特定的數(shù)據(jù)源(節(jié)點)讀寫數(shù)據(jù)。處理流是“連接”在已經(jīng)存在的流(節(jié)點流或者處理流)之上,通過對數(shù)據(jù)的處理為程序供應(yīng)更強大的讀寫實力。4.(1)InputStream:繼承InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit)(2)OutputStream:繼承OutputStream的流都是用于程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit)(3)Reader:繼承Reader的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符(16bit)(4)Writer:繼承Writer的流都是用于程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符(16bit)5.節(jié)點流類型字符流字節(jié)流File(文件)MemoryArrayCharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamMemoryStringStringReaderStringWriter—Pipe(管道)PipedReaderPipedWriterPipedInputStreamPipedOutputStream6緩沖流(1)緩沖流要套接在相應(yīng)的節(jié)點流之上,對讀寫的數(shù)據(jù)供應(yīng)了緩沖的功能,提高了讀寫的效率,同時增加了一些新的方法。(2)j2sdk供應(yīng)了四種緩沖流BufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream(3)緩沖輸入流具有支持父類的mark和reset方法。(4)BufferedReader供應(yīng)了readLine()用于讀取一行字符串(以\r或者\n分隔)(5)Bufferedwriter供應(yīng)了newLine用于寫入一個行分隔符(6)對于輸出的緩沖流,寫出的數(shù)據(jù)會現(xiàn)在內(nèi)存中緩沖,運用flush方法將會使內(nèi)存中的數(shù)據(jù)立即寫出。7.轉(zhuǎn)換流(1)InputStreamReader和OutputStreamWriter用于字節(jié)數(shù)據(jù)和字符數(shù)據(jù)之間的轉(zhuǎn)換。(2)InputStreamReader須要和InputStream套接。(3)OutputStreamWriter須要和OutputStream套接。(4)轉(zhuǎn)換流可以在構(gòu)造的時候指定其編碼集合。8.處理流處理類型字符流字節(jié)流BufferingBufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStreamFilteringFilterReaderFilterWriterFilterInputStreamFilterOutputStreamConvertingbetweenbytesandcharactersInputStreamReaderOutputStreamWriterObjectserializationObjectInputStreamObjectOutputStreamDataConversionDataInputStreamDataOutputStreamCountingLineNumberReaderLineNumberInputStreamPeekingaheadPushBackReaderPushBackInputStreamPrintingPrintWriterPrintStream數(shù)據(jù)流(1)DataInputStream和DataOutputStream分別繼承自InputStream和OutputStream,他們都是處理流。須要分別套接在InputStream和OutputStream的類型的節(jié)點流之上。(2)DataInputStream和DataOutputStream供應(yīng)可以存取及機器無關(guān)的java原始類型數(shù)據(jù)(如int,double)等原始類型數(shù)據(jù)。(3)DataInputStream和DataOutputStream的構(gòu)造方法:DataInputStream(InputStreamin)DataOutputStream(OutputStreamout)Print流(1)PrintStream和PrintWriter都屬于輸出流,分別針對字節(jié)和字符。(2)PrintStream和PrintWriter供應(yīng)了重載的print。(3)PrintStream和PrintWriter的輸出操作不會拋出異樣,用戶通過檢測錯誤狀態(tài)獲得錯誤信息。(4)PrintStream和PrintWriter有自動flush功能。(5)println方法用于多種類型數(shù)據(jù)的輸出。11.Object流(1)干脆將Oject寫入或者讀出=1\*GB3①TestObjectIO.java=2\*GB3②transient關(guān)鍵字=3\*GB3③serializable關(guān)鍵字=4\*GB3④externalizable關(guān)鍵字十五.java多線程機制線程的基本概念線程是一個程序內(nèi)部的依次限制流。線程和進(jìn)程的區(qū)分=1\*GB3①每個進(jìn)程都有獨立的代碼和數(shù)據(jù)空間(進(jìn)程上下文),進(jìn)程間的切換會有較大的開銷。=2\*GB3②線程可以看作是輕量級的進(jìn)程,同一類進(jìn)程共享代碼和數(shù)據(jù)空間,每個線程都有獨立的運行棧和程序計數(shù)器(PC),線程切換開銷小。=3\*GB3③多進(jìn)程:在操作系統(tǒng)中可以同時運行多個任務(wù)(程序)。=4\*GB3④多線程:在同一應(yīng)用程序中有多個依次流同時執(zhí)行。java的線程是通過java.lang.Thread來實現(xiàn)的。VM啟動時會有由一個主方法(publicstaticvoidmain())所定義的線程??梢酝ㄟ^創(chuàng)建Thread的實例來創(chuàng)建新的線程。每個線程都是通過某個特定的Thread對象所對應(yīng)的run()方法來實現(xiàn)操作的,方法run()稱為線程體。通過調(diào)用Thread類的一個start()方法來啟動一個線程。線程的創(chuàng)建和啟動第一種=1\*GB3①定義線程類實現(xiàn)Runnable接口。=2\*GB3②ThreadmyThread=newThread(target)//target為Runnable接口類型。=3\*GB3③Runnable中只有一個方法:publicvoidrun():用以定義線程運行體。=4\*GB3④運用Runnable接口可以為多個線程供應(yīng)共享的數(shù)據(jù)。=5\*GB3⑤在實現(xiàn)Runnable接口的類的run方法定義中可以運用Thread的靜態(tài)方法。publicstaticThreadcurrentThread():獲得當(dāng)前線程的引用其次種=1\*GB3①可以定義一個Thread類的子類重寫Thread類的run方法classMyThreadextendsThread{ publicvoidrun(){…}}=2\*GB3②生成該類的對象MyThreadmyThread=newMyThread()線程狀態(tài)轉(zhuǎn)化線程限制的基本方法方法功能isAlive()推斷線程是否還活著,即推斷線程是否還未終止。getPriority()獲得線程優(yōu)先級數(shù)值setPriority()設(shè)置線程優(yōu)先級的數(shù)值Thread.sleep()將當(dāng)前線程睡眠指定毫秒數(shù)join()調(diào)用某線程的該方法,將當(dāng)前線程及該線程“合并”,即等待該線程結(jié)束,在復(fù)原當(dāng)前線程的運行。yield()讓出cpu,當(dāng)前線程進(jìn)入就緒隊列等待調(diào)度。wait()當(dāng)前線程進(jìn)入對象的waitpool。notify()/notifyAll()喚醒對象waitpool中的一個或者全部的等待的線程。5.sleep方法(1)可以調(diào)用Thread的靜態(tài)方法:publicstaticvoidsleep(longmillis)throwsInterruptedException使得當(dāng)前的線程睡眠(短暫停止執(zhí)行millis毫秒數(shù))(2)由于是靜態(tài)方法,sleep可以干脆由類名調(diào)用:Thread.sleep(…)6.線程的優(yōu)先級別(1)java供應(yīng)一個線程調(diào)度器來限制程序中啟動后進(jìn)入就緒狀態(tài)的全部線程。線程調(diào)度器依據(jù)線程的優(yōu)先級確定應(yīng)調(diào)度哪個線程來執(zhí)行。(2)線程的優(yōu)先級用數(shù)字表示,范圍1~10,一個線程的缺省優(yōu)先級是5.Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Threa.NORM_PRIORITY=5;(3)運用下述方法設(shè)置或者獲得線程對象的優(yōu)先級intgetPriority()voidsetPriority(intnewPriority)線程同步在Java語言中,引入對象互斥鎖概念,保證共享數(shù)據(jù)操作的完整性,每個對象都對應(yīng)于一個可稱為“互斥鎖”的標(biāo)記,這標(biāo)記保證在任何一時刻,只有一個線程訪問該對象。關(guān)鍵字synchronized來及對象的互斥鎖聯(lián)系,當(dāng)某個對象synchronized修飾時,表明該對象在任何一個時刻都只能由一個線程訪問。synchrronized還可以放在方法聲明中,表示整個方法是同步方法。wait和sleep的區(qū)分wait時別的線程可以訪問鎖定的對象。調(diào)用wait方法時必需鎖定該對象。Sleep時別的線程也不行以訪問鎖定對象。十六.網(wǎng)絡(luò)編程網(wǎng)絡(luò)基礎(chǔ)概念計算機網(wǎng)絡(luò)把分布在不同地區(qū)的計算機及特地的外部設(shè)備用通信線路互連成一個規(guī)模大、功能強的網(wǎng)絡(luò)系統(tǒng)。從而使更多的計算機可以便利的相互傳遞信息,共享軟件,硬件,數(shù)據(jù)信息等資源。計算機網(wǎng)絡(luò)的主要功能資源共享信息傳輸及集中處理均衡負(fù)荷及分布處理綜合信息服務(wù)網(wǎng)絡(luò)通信協(xié)議及接口網(wǎng)絡(luò)通信協(xié)議計算機網(wǎng)絡(luò)中實現(xiàn)通信必需有一些約定即通信協(xié)議,對速率,傳輸代碼,代碼結(jié)構(gòu),傳輸限制步驟,出錯限制等制定標(biāo)準(zhǔn)。網(wǎng)絡(luò)通信接口為使兩個節(jié)點之間可以通話,必需在他們之間建立通信工具(接口),使彼此之間可以進(jìn)行信息交換。接口包括兩部分:硬件裝置:實現(xiàn)節(jié)點之間的信息傳輸;軟件裝置:規(guī)定雙方進(jìn)行通信的約定協(xié)議。通信協(xié)議分層思想為什么要分層由于節(jié)點之間聯(lián)系很困難,在制定協(xié)議時,把困難成分分解成一些簡潔的成分,再將他們符合起來,最常用的符合方式是層次方式,即同層間可以通信,上一層可以調(diào)用下一層,而及再下一層不發(fā)生關(guān)系,各層互不影響,利于系統(tǒng)的開發(fā)和擴展。通信協(xié)議的分層規(guī)定把用戶應(yīng)用程序作為最高層,把物理通信線路作為最底層,將期間的協(xié)議處理扽為若干層,規(guī)定每層處理的任務(wù),也規(guī)定每層的接口標(biāo)準(zhǔn)。參考模型OSI參考模型TCP/IP參考模型應(yīng)用層應(yīng)用層表示層會話層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理+數(shù)據(jù)鏈路層物理層數(shù)據(jù)封裝數(shù)據(jù)拆分IP協(xié)議IP(InternetProtocol)協(xié)議是網(wǎng)際層的只要協(xié)議,支持網(wǎng)間互聯(lián)的數(shù)據(jù)報通信,他供應(yīng)的主要功能有:無連接數(shù)據(jù)報傳送;數(shù)據(jù)報路由選擇和差錯限制。TCP協(xié)議和UDP協(xié)議TCP(transmissioncontrolprotocol)協(xié)議是特地設(shè)計用在不行靠的因特網(wǎng)上供應(yīng)牢靠的,端到端的字節(jié)流通信的協(xié)議,他是一種面對連接的協(xié)議。TCP連接是字節(jié)流而非報文流。UDP(userdataprotocol)協(xié)議向應(yīng)用程序供應(yīng)一種發(fā)送封裝的原始IP數(shù)據(jù)報的方法,而且發(fā)送時無需建立連接,是一種不行靠的連接。Socket(1)兩個java應(yīng)用程序可以通過一個雙向的網(wǎng)絡(luò)通信連接實現(xiàn)數(shù)據(jù)交換,這個雙向連接的一端稱為一個Socket。(2)Socket通常用來實現(xiàn)client-server連接。(3)包中定義了兩個類,Socket和ServerSocket,分別用來實現(xiàn)雙向連接的client端和server端。(4)建立連接時所需的尋址信息為遠(yuǎn)程計算機的IP地址和端口號(PortNumber)=1\*GB3①TCP端口和UDP端口是分開的。=2\*GB3②每一個65536個端口。TCPSocket通信模型十七.GUI編程AWTAWT(abstractwindowtoolkit)包括了許多類和接口,用于javaapplication的GUI(GraphicsuserInterface)編程。GUI的各種元素由java來實現(xiàn)。運用AWT所涉及的類一般都在java.awt這個包里。Container和Component是兩個核心類。Container&Componentjava圖形用戶界面的最基本組成部分是Component,Component類極其子類對象都用來描述以圖形化的方式顯示在屏幕上,并能及用戶進(jìn)行交互的GUI元素。一般的Component對象不行以獨立的顯示出來,必需將“放在“某一Container

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論