版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言基礎(chǔ)知識(shí)整理一.計(jì)算機(jī)語(yǔ)言的發(fā)展史及歷史地位第一代語(yǔ)言打孔機(jī)——純機(jī)器語(yǔ)言1.第二代語(yǔ)言2.匯編第三代語(yǔ)言3.(1)C、Pascal、Fortran面向過(guò)程的語(yǔ)言C++面向過(guò)程/面向?qū)ο?3)java跨平臺(tái)的純面向?qū)ο蟮恼Z(yǔ)言(4).NET跨平臺(tái)語(yǔ)言4.java語(yǔ)言特點(diǎn)一種面向?qū)ο蟮恼Z(yǔ)言(2)一種平臺(tái)無(wú)關(guān)的語(yǔ)言,提供程序運(yùn)行的解釋環(huán)境一種健壯的語(yǔ)言,吸收了C/C++語(yǔ)言的優(yōu)點(diǎn),但去掉了影響程序健壯性的部分(如:指針、內(nèi)存的申請(qǐng)與釋放等)。二.Java程序運(yùn)行機(jī)制及運(yùn)行過(guò)程java兩種核心機(jī)制Java虛擬機(jī)(JavaVirtualMachine)垃圾收集機(jī)制(GarbgeCollection)java運(yùn)行過(guò)程源程序(*.java文件)—>java編譯器一>字節(jié)碼(*.class文件)一>類裝載器一>字節(jié)碼校驗(yàn)器一>解釋器—>操作系統(tǒng)平臺(tái)java虛擬機(jī)(1)java虛擬機(jī)可以理解為是一個(gè)以字節(jié)碼為機(jī)器指令的CPU。對(duì)于不同的運(yùn)行平臺(tái)有不同的虛擬機(jī)。Java虛擬機(jī)機(jī)制屏蔽了底層運(yùn)行平臺(tái)的差別,實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”。垃圾收集機(jī)制不再使用的內(nèi)存空間應(yīng)回收一垃圾收集。在c/c++語(yǔ)言中,由程序員負(fù)責(zé)回收無(wú)用的內(nèi)存空間。Java語(yǔ)言消除了由程序員負(fù)責(zé)回收無(wú)用的內(nèi)存空間的責(zé)任,它提供了一種系統(tǒng)級(jí)線程跟蹤存儲(chǔ)空間的分配情況,檢查并釋放那些可以被釋放的存儲(chǔ)器空間。4)垃圾收集在java程序運(yùn)行過(guò)程中自動(dòng)進(jìn)行,程序員無(wú)法精確進(jìn)行控制和干預(yù)。.JavaApplication初步1.java源文件以“java”為擴(kuò)展名。源文件的基本組成部分是類(class)。2一個(gè)源文件最多只有一個(gè)public類,其他類的個(gè)數(shù)不限,如果源文件包括一個(gè)public類,它必須按該類名命名。java應(yīng)用程序的執(zhí)行入口是main()方法,有固定的書(shū)寫(xiě)格式:publicstaticvoidmain(String[]args){…}java語(yǔ)言嚴(yán)格區(qū)分大小寫(xiě)。java方法由一條條語(yǔ)句構(gòu)成,每條語(yǔ)句已分號(hào)結(jié)束。1/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇6.java語(yǔ)言有三種注釋方式://單行注釋/*???..*/多行注釋/***用于多行注釋,且可以被doc工具解析*/四.J2SE基礎(chǔ)語(yǔ)法標(biāo)識(shí)符:java對(duì)各種變量、方法和類等要素命名時(shí)使用的字符序列。凡是可以自己起名字的地方都叫標(biāo)識(shí)符,都要符合標(biāo)識(shí)符的規(guī)則標(biāo)識(shí)符的命名規(guī)則:標(biāo)識(shí)符由字母、下劃線”_”、美元符”$”或數(shù)字組成。標(biāo)識(shí)符應(yīng)該以字母、下劃線或者美元符開(kāi)頭。java標(biāo)識(shí)符大小寫(xiě)敏感,長(zhǎng)度無(wú)限制。java標(biāo)識(shí)符選取應(yīng)該“見(jiàn)名知意”且不可以和java關(guān)鍵字重復(fù)。關(guān)鍵字:java中一些賦以特定含義,用作專門用途的字符串。所有java關(guān)鍵字都是英文小寫(xiě)字母。goto和const雖然從未用過(guò),但是也被留作java的關(guān)鍵字。abstractdefalutifprivatethisboleandoimplementsprotectedthrowthrowsdoubleimportreturnbreaktryelseinstanceofbytepublicvolatileextendsintcaseshortwhilecatchfinalinterfacestaticvoidclasspackagesuperfinallynullswitchnewfloatcharsynchronizednativeforconsttransientcontinuelongstrictfpgotojava常量java的常量值用字符串表示,區(qū)分不同的數(shù)據(jù)類型。整形常量、實(shí)型常量、字符常量、邏輯常量、字符串常量。區(qū)分字符常量和字符串常量“常量”這個(gè)名字還會(huì)用在其他環(huán)境中用來(lái)表示值不變的變量。java變量java變量是程序中最基本的存儲(chǔ)單元,其要素包括變量名、變量類型、作用域。java中每一個(gè)變量都屬于特定的數(shù)據(jù)類型,在使用前必須對(duì)其進(jìn)行申明。從本質(zhì)上講,變量其實(shí)是內(nèi)存中一小塊區(qū)域,使用變量名來(lái)訪問(wèn)這塊區(qū)域,因此,每一個(gè)變量進(jìn)行使用之前,必須對(duì)其進(jìn)行申明,然后進(jìn)行賦值,這樣才可以使用。heap:new出來(lái)的東西存放;stack:局部變量存放在里面;datasegment:靜態(tài)常量及字符串常量;codesegment:存放代碼6.java變量的分類(1)按聲明的位置劃分:2/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇局部變量:方法或語(yǔ)句塊內(nèi)部定義的變量成員變量:方法外面、類的里面定義的變量類外面不能有變量的聲明(2)按所屬數(shù)據(jù)類型劃分:基本數(shù)據(jù)類型變量引用數(shù)據(jù)類型變量7java局部變量和成員變量方法體內(nèi)部聲明的變量(包括形參)稱為局部變量方法體內(nèi)部是指與方法對(duì)應(yīng)的大括號(hào)內(nèi)部。在方法體外部,類體內(nèi)部聲明的變量是成員變量。數(shù)據(jù)類型的劃分基本數(shù)據(jù)類型:整數(shù)類型(byte、int、short、long)、浮點(diǎn)類型(float)、字符型(char)、布爾型(boolean)引用數(shù)據(jù)類型:類(class)、接口(interface)、數(shù)組。邏輯型booleanboolean數(shù)據(jù)類型適合邏輯運(yùn)算,一般用于流程的控制。boolean數(shù)據(jù)類型只允許取值為true或false,不可以用0或者非0代替true或者false.字符型charchar型數(shù)據(jù)用來(lái)表示通常意義上的”字符”。字符常量為用單引號(hào)括起來(lái)的單個(gè)字符。java字符采取Unicode字符編碼,每個(gè)字符占據(jù)兩個(gè)字節(jié),因此可以采用十六進(jìn)制編碼表示。java語(yǔ)言還允許使用轉(zhuǎn)義字符'\'來(lái)將其后的字符轉(zhuǎn)化為其他的含義。(5)2進(jìn)制、8進(jìn)制、16進(jìn)制的轉(zhuǎn)化。整數(shù)類型java各整數(shù)類型有各自的字段長(zhǎng)度和表數(shù)范圍,其不受具體操作系統(tǒng)的影響,以保證java程序的可移植性。java語(yǔ)言整形常量的三種表示形式:十進(jìn)制整數(shù);八進(jìn)制整數(shù):要求以0開(kāi)頭;十六進(jìn)制整數(shù):要求以0x或者0X開(kāi)頭java語(yǔ)言整形常量默認(rèn)的類型為int,聲明long型常量時(shí)后面需要加上”l”或者”L”;類占用內(nèi)存空表數(shù)范byte-128~127字short-2A15~2A15-1字int-2A31~2A31-1字-2人63~2人63-1long字節(jié)12.浮點(diǎn)類型與整形類似,浮點(diǎn)類型也有各自的字段長(zhǎng)度和表數(shù)范圍,不受平臺(tái)影響。java浮點(diǎn)類型常量有兩種表示方法:十進(jìn)制形式和科學(xué)計(jì)數(shù)法形式j(luò)ava浮點(diǎn)型默認(rèn)的常量類型為double,聲明為float時(shí)需要后面加上”f”或者”F”;類型占用內(nèi)存空間表數(shù)范圍-3.403E38~3.403E38float4字節(jié)3/26李勇勇東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇-1.798E308~1.798E308double字節(jié)813.基本數(shù)據(jù)類型轉(zhuǎn)化boolean類型不可以轉(zhuǎn)化為其他的數(shù)據(jù)類型(1)2)容量小的數(shù)據(jù)類型自動(dòng)轉(zhuǎn)化為容量大的數(shù)據(jù)類型。(Byte.short.char->int->long->float->double①int型進(jìn)行計(jì)算②byteshortchar三者不會(huì)相互的轉(zhuǎn)化,計(jì)算時(shí)三者都先轉(zhuǎn)化為)容量大的數(shù)據(jù)類型轉(zhuǎn)化為容量小的數(shù)據(jù)類型時(shí),要加上強(qiáng)制類型轉(zhuǎn)化符,這樣可能造(3成精度降低或者溢出,使用時(shí)要格外注意。)有多種數(shù)據(jù)庫(kù)類型進(jìn)行計(jì)算時(shí),應(yīng)該將所有的數(shù)據(jù)類型轉(zhuǎn)化為容量最大的那種數(shù)據(jù)類(4型,在進(jìn)行計(jì)算。int。)實(shí)型默認(rèn)為double;整形默認(rèn)為(514?運(yùn)算符--%++-*/(1)算術(shù)運(yùn)算符:+!=>=<=)關(guān)系運(yùn)算符:>< (2||&&)邏輯運(yùn)算符:!|&(3>>><<|A>>(4)位運(yùn)算符:&!)賦值運(yùn)算符:(5*=/=)擴(kuò)展賦值運(yùn)算符:+=-= (6+7)字符串連接運(yùn)算符:(15.賦值運(yùn)算符和擴(kuò)展賦值運(yùn)算符:”兩側(cè)數(shù)據(jù)類型不一致時(shí),可以使用默認(rèn)類型轉(zhuǎn)化或者強(qiáng)制類型轉(zhuǎn)化。1)當(dāng)”=(可以不使用強(qiáng)制類型轉(zhuǎn)化符,只要不超過(guò)shortchar,2)可以將整形常量直接賦值給byte(其表數(shù)范圍即可。16?字符串連接符:)兩側(cè)的操作數(shù)只要有一個(gè)是字符串類型,則會(huì)默認(rèn)將另一個(gè)自動(dòng)轉(zhuǎn)化為字符串類型然1(后再進(jìn)行運(yùn)算。)當(dāng)進(jìn)行打印時(shí),無(wú)論是什么類型都會(huì)被轉(zhuǎn)化為字符串類型進(jìn)行打印。(2表達(dá)式17.)表達(dá)式是符合一定語(yǔ)法規(guī)則的運(yùn)算符和操作數(shù)的序列。(1)表達(dá)式的值是指對(duì)操作數(shù)進(jìn)行運(yùn)算得到的結(jié)果(2)表達(dá)式的類型是指表達(dá)式結(jié)果的數(shù)據(jù)類型(3)應(yīng)該按照運(yùn)算符從高到低的的優(yōu)先級(jí)順序進(jìn)行運(yùn)算(4)優(yōu)先級(jí)相同的應(yīng)該按照事先約定的結(jié)合方向進(jìn)行運(yùn)算(518?三目條件運(yùn)算符X?Y:Z1)語(yǔ)法格式:(反之,整y;的值,如果xx的值為真,則整個(gè)表達(dá)式的值為(2)x為boolean類型,先計(jì)算z個(gè)表達(dá)式的值為語(yǔ)句語(yǔ)句、dowhile語(yǔ)句、19.iffor語(yǔ)句、whilebreak語(yǔ)句:用于終止某個(gè)語(yǔ)句塊的結(jié)束,用于循環(huán)語(yǔ)句體中,可以強(qiáng)制退出循環(huán)。(1)未continue)2continue語(yǔ)句:用于循環(huán)語(yǔ)句中,用于終止某次循環(huán)過(guò)程,跳過(guò)循環(huán)體中(執(zhí)行的循環(huán),直接進(jìn)行下一次的循環(huán)。switch語(yǔ)句:3()break穿透,推薦使用語(yǔ)句case①小心case②多個(gè)可以合并到一起4/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇default可以省略,但是不推薦省略java中switch只能探測(cè)到int類型的值方法(1) java的方法類似與其他語(yǔ)言的函數(shù),是一段完成特定功能的代碼片段,聲明格式[修飾符1修飾符2…]返回值類型方法名{形式參數(shù)列表}{Java語(yǔ)句….}(2) 形式參數(shù):在方法被調(diào)用的時(shí)候用于接收外部輸入的數(shù)據(jù)。(3) 實(shí)參:調(diào)用方法時(shí)實(shí)際傳給方法的數(shù)據(jù)。(4)返回值:方法被調(diào)用完后返還給調(diào)用他的環(huán)境的數(shù)據(jù)。(5)返回值類型:事先約定返回值的數(shù)據(jù)類型,如果沒(méi)有返回值,則一定要給出void。(6)java語(yǔ)言中使用下述形式調(diào)用方法:對(duì)象名.方法名(實(shí)參列表)。(7)實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必須和所調(diào)用方法的形參列表相匹配。(8)return終止方法的執(zhí)行并且指定返回?cái)?shù)據(jù)類型。(9)java中函數(shù)調(diào)用中傳遞參數(shù)時(shí),遵循值傳遞原則:基本類型傳遞的是數(shù)據(jù)值的本身,引用類型傳遞的是對(duì)對(duì)象的引用,而不是對(duì)象本身。遞歸調(diào)用:在方法執(zhí)行過(guò)程中出現(xiàn)方法本身的調(diào)用。五.面向?qū)ο蟮脑O(shè)計(jì)思想從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造的過(guò)程中盡可能的運(yùn)用人類的自然思維方式。面向?qū)ο蟾訌?qiáng)調(diào)人類在日常的思維邏輯中經(jīng)常采用的思想方法和原則,如抽象、分類、聚合、多態(tài)、繼承等。3?對(duì)象用計(jì)算機(jī)語(yǔ)言對(duì)問(wèn)題域中的事物的描述,對(duì)象通過(guò)屬性(attribute)和方法(method)來(lái)對(duì)應(yīng)事物所具有的靜態(tài)屬性和動(dòng)態(tài)屬性。4?類是用于描述同一類型對(duì)象的一個(gè)抽象概念,類中定義了這一類對(duì)象因具有的靜態(tài)和動(dòng)態(tài)屬性。5?類可以看成是一類對(duì)象的模版,對(duì)象可以看作是該類的一個(gè)具體實(shí)例。六.類(對(duì)象)之間的關(guān)系(1)關(guān)聯(lián)關(guān)系(2)繼承關(guān)系(一般和特殊)女如XXX是一種XXX(3)多態(tài)關(guān)系(4)聚合關(guān)系(整體和部分)(5)實(shí)現(xiàn)關(guān)系java與面向?qū)ο螅?) 對(duì)象是java程序的核心,在java中“萬(wàn)事萬(wàn)物皆對(duì)象”(2) 對(duì)象可以看作是靜態(tài)屬性(成員變量)和動(dòng)態(tài)屬性(方法)的封裝體。(3) 類是用來(lái)創(chuàng)建同一類型對(duì)象的“模版”,在一個(gè)類中定義該類所因具有的成員變量和方法。(4) j2sdk提供了很多類給編程人員,編程人員也可以自己定義類。(5)成員變量=屬性方法=函數(shù)為什么使用對(duì)象?1?面向?qū)ο缶幊桃灰唤M對(duì)象相互配合通過(guò)溝通完成特定功能。2?對(duì)象都有對(duì)外服務(wù)的接口,通過(guò)繼承可以復(fù)用。3?對(duì)象隱藏內(nèi)部服務(wù)的實(shí)現(xiàn),通過(guò)聚合可以復(fù)用。/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇4?面向?qū)ο罂梢允刮覀冞_(dá)到這些年苦苦追求的境界。5?組件一比對(duì)象更高層次上的抽象。面向?qū)ο髄.java類的定義(1) 類的定義主要有成員變量和方法這兩個(gè)方面。(2) 聲明成員變量的格式:[<modifiers>]type<attr_name>[=defaultValue]女如privateintid;privateintmoney=20;聲明方法的格式:[<modifiers>]<modifiers><return_type><name>[<argu_list>]{[<statements>]}女:publicintgetAge(){returnage;}成員變量成員變量可以是java數(shù)據(jù)類型中任何一種數(shù)據(jù)類型(基本數(shù)據(jù)類型和引用數(shù)據(jù)類型)。在定義成員變量時(shí)可以對(duì)其進(jìn)行初始化,如果對(duì)其不進(jìn)行初始化,則java使用默認(rèn)的初始化值。成員變量的整個(gè)范圍為整個(gè)類體。變成員量類型byteshortint輸入流輸出流longInputStreamOutputStreamfloatdoubleReaderWriterbooleanchar所有引用類型取值0000L0.0F0.0Dfalsenull引用java語(yǔ)言中除了基本的數(shù)據(jù)類型之外其余的都稱之為引用類型。java中的對(duì)象是通過(guò)引用對(duì)其進(jìn)行操作的。如何在內(nèi)存中區(qū)分類和對(duì)象?(1)類是靜態(tài)概念,在代碼區(qū)。對(duì)象是new出來(lái)的,位于堆內(nèi)存。類的每個(gè)成員變量在不同的對(duì)象中都有不同的值(除靜態(tài)變量),而方法只有一份,只在執(zhí)行的時(shí)候占據(jù)內(nèi)存。對(duì)象的創(chuàng)建和使用必須使用new關(guān)鍵字創(chuàng)建對(duì)象。使用對(duì)象(引用).成員變量或者引用對(duì)象的成員變量。使用對(duì)象(引用).方法(參數(shù)列表)來(lái)調(diào)用對(duì)象的方法。同一類的每個(gè)對(duì)象有不同的變量存儲(chǔ)空間。同一類的每個(gè)對(duì)象共享該類的方法。非靜態(tài)方法是針對(duì)每個(gè)對(duì)象進(jìn)行調(diào)用。構(gòu)造方法(構(gòu)造函數(shù))使用new+構(gòu)造方法創(chuàng)建一個(gè)新的對(duì)象。構(gòu)造函數(shù)是一個(gè)定義在Java類中用來(lái)初始化對(duì)象的函數(shù)。構(gòu)造函數(shù)與類同名且沒(méi)有返回值。創(chuàng)建對(duì)象時(shí),使用構(gòu)造函數(shù)初始化對(duì)象的成員變量。當(dāng)沒(méi)有指定構(gòu)造函數(shù)時(shí),編譯器會(huì)自動(dòng)給類添加形如類名(){}的構(gòu)造函數(shù)。約定俗成的命名規(guī)則類名的首寫(xiě)字母大寫(xiě)變量名和方法名的首寫(xiě)字母小寫(xiě)(3)運(yùn)用駝峰標(biāo)識(shí)方法的重載方法的重載是指在一個(gè)類中可以有相同的名字,但是參數(shù)不同的多個(gè)方法。調(diào)用時(shí)會(huì)6/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇根據(jù)不同的參數(shù)表選擇相應(yīng)的方法。9.構(gòu)造方法的重載與普通方法一樣,構(gòu)造方法也有重載。10.this關(guān)鍵字在類的方法定義中使用this關(guān)鍵字代表使用該方法的對(duì)象的調(diào)用。當(dāng)必須指出當(dāng)前使用方法的對(duì)象是誰(shuí)時(shí)要使用this關(guān)鍵字。有時(shí)使用this關(guān)鍵字可以處理方法中的成員變量和參數(shù)重名的情況。this可以看作是一個(gè)變量,他的值是當(dāng)前對(duì)象的引用。static關(guān)鍵字在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時(shí)被初始化,對(duì)于該類的所有對(duì)象來(lái)說(shuō)static成員變量只有一份。用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時(shí),不會(huì)將對(duì)象的引用傳遞給它,所以在static方法中不可以訪問(wèn)非static方法。靜態(tài)方法不再是針對(duì)某個(gè)對(duì)象調(diào)用,所以不能訪問(wèn)非靜態(tài)成員??梢酝ㄟ^(guò)對(duì)象引用或者類名(不需實(shí)例化)訪問(wèn)靜態(tài)成員。package和import語(yǔ)句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問(wèn)題,java引入包(package)機(jī)制,提供類的多重類命名空間。package語(yǔ)句作為java的第一條語(yǔ)句,指明該文件中類所在的包。(若缺省該句,則為無(wú)名包)。女如packagepkg1[.pkg2[?”]]java編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,package語(yǔ)句中用”?”來(lái)指明包(目錄)的層次。如果將一個(gè)類打包,使用該類時(shí),需要使用該類的全名,java編譯器才會(huì)找到該類?也可以使用import在文件開(kāi)頭引入要使用的類??梢圆恍枰褂胕mport語(yǔ)句直接引入java.lang的包中的類。如果要將一個(gè)類放入包中,在這個(gè)類原文件第一句需要寫(xiě)package。必須保證該類的class文件位于正確的目錄下。該類的源碼可能會(huì)產(chǎn)生影響刪除或者轉(zhuǎn)移到另外的目錄另外的類想訪問(wèn)的話寫(xiě)全名引入*具體類名訪問(wèn)位于同一包中的類不需要引入必須class文件的最上層包的父目錄位于classpath下執(zhí)行一個(gè)類需要寫(xiě)全包名j2sdk主要包的介紹java.lang一包含java語(yǔ)言的一些核心類,String,Math,lnteger,System,Thread提供常用的類。java.wat一包含了構(gòu)成抽象窗口工具集(abstractwindowtookits)的多個(gè)類,這些類被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUl)。java.applet一包含applet運(yùn)行所需要的一些類?!恍┡c網(wǎng)絡(luò)相關(guān)操作的類。
java.io—包含多種能提供輸入/輸出功能的類。java.util—包含實(shí)用的工具類,如定義系統(tǒng)特性,使用與日期日歷相關(guān)的函數(shù)。7/26李勇勇東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇打包的格式j(luò)ava-cvfxx.jar*.*14.類的繼承與權(quán)限控制java中使用extends關(guān)鍵字來(lái)實(shí)現(xiàn)類的繼承機(jī)制,語(yǔ)法規(guī)則如下:<modifier>class<name>[extends<superclass>]{…}通過(guò)繼承,子類自動(dòng)擁有基類所有的成員(成員變量和方法)。java只支持單繼承,不支持多繼承。①一個(gè)子類只能有一個(gè)基類,一個(gè)基類可以派生出多個(gè)子類。java權(quán)限修飾符public,private,protected置于類的成員定義之前,用來(lái)限定其他對(duì)象對(duì)該類修飾符類內(nèi)部同一包子類任何地方Y(jié)esprivateYesdefaultYesprotectedYesYesYesYesYesYespublicYes(5)對(duì)于class的權(quán)限修飾只可以用public和defaultpublic類可以在任何地方都被訪問(wèn)。default只可以被同一個(gè)包中的類訪問(wèn)。方法的重寫(xiě)在子類中可以根據(jù)需要對(duì)于從基類中繼承來(lái)的方法進(jìn)行重寫(xiě)。重寫(xiě)方法必須和被重寫(xiě)方法具有相同的名稱,參數(shù)列表和返回值類型。重寫(xiě)方法不能使用比被重寫(xiě)方法更嚴(yán)格的訪問(wèn)權(quán)限。super關(guān)鍵字:在java類中使用super關(guān)鍵字來(lái)引用基類的成分。繼承中的構(gòu)造方法子類的構(gòu)造過(guò)程中必須調(diào)用基類的構(gòu)造方法。子類可以在自己的構(gòu)造方法中使用super(argu_list)來(lái)調(diào)用基類的構(gòu)造方法。①使用this(argu_list)調(diào)用本類中另外的構(gòu)造方法。②如果調(diào)用super,必須寫(xiě)在基類的構(gòu)造方法的第一行。如果子類的構(gòu)造方法中沒(méi)有顯示的調(diào)用基類的構(gòu)造方法,則系統(tǒng)默認(rèn)的調(diào)用基類無(wú)參的構(gòu)造方法。如果子類中既沒(méi)有顯示的調(diào)用基類的構(gòu)造方法,而基類中又沒(méi)有無(wú)參的構(gòu)造方法,則編譯出錯(cuò)。18.Object類(1)Object類是java中所有類的根基類。如果在類的聲明中未使用extends關(guān)鍵字來(lái)指明其基類,則默認(rèn)基類為Object類。toString方法Object類中定義類publicStringtoString()方法,其返回值為String類型,描述當(dāng)前的對(duì)象的有關(guān)信息。在進(jìn)行String與其他數(shù)據(jù)類型的連接操作時(shí),將自動(dòng)調(diào)用該類對(duì)象的toString()方法??梢愿鶕?jù)需要在用戶自定義類型中重寫(xiě)toSring()方法。equals()方法一Object類中定義publicBooleanequals(Objectobj)提供對(duì)象是否相等的邏輯。Object的equals方法定義為:x.equals(y)當(dāng)x和y是同一對(duì)象的應(yīng)用時(shí)返回true否則返回false。j2sdk提供了一些類,如String,Date等,重寫(xiě)了Object類中的equals方法,調(diào)用這些8/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇類的equals方法,x.equals(y),當(dāng)x和y所引用的對(duì)象是同一類的對(duì)象且屬性內(nèi)容相等時(shí)(并不一定是相同對(duì)象),返回true否則返回false。可以根據(jù)需要在用戶自定義類型中重寫(xiě)equals()方法。對(duì)象轉(zhuǎn)型(casting)一個(gè)基類的引用類型變量可以指向其子類對(duì)象。一個(gè)基類的引用不可以訪問(wèn)子類對(duì)象新增加的成員(成員變量和方法)??梢允褂靡米兞縄nstanceof類名來(lái)判斷該引用型變量所指向的對(duì)象是否屬于該類或者該類的子類。子類的對(duì)象可以當(dāng)作基類的對(duì)象來(lái)使用稱作向上轉(zhuǎn)型(upcasting),反之稱為向下轉(zhuǎn)型(downcasting)。動(dòng)態(tài)綁定;在執(zhí)行期間而非編譯期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際類型來(lái)調(diào)用相應(yīng)的方法。抽象類(1)用abstact類來(lái)修飾一個(gè)類時(shí),這個(gè)類叫做抽象類,用abstract來(lái)修飾一個(gè)方法時(shí),這個(gè)方法叫做抽象方法。(2)含有抽象方法的類必須聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫(xiě)。(3)抽象類不能被實(shí)例化。抽象方法只需要聲明,不需要實(shí)現(xiàn)。final關(guān)鍵字final變量的值不可以改變:final的成員變量和局部變量(形參)。final方法不能被重寫(xiě)。final類不可以被繼承。接口(1)接口(interface)是抽象方法和常量值的定義的集合。(2)從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含方法和常量的定義,而沒(méi)有方法和變量的實(shí)現(xiàn)。(3)多個(gè)無(wú)關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口。(4)一個(gè)類可以實(shí)現(xiàn)多個(gè)無(wú)關(guān)的接口。(5)與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)性。接口中聲明屬性默認(rèn)為publicstaticfinal的,也只能是publicstaticfinal的。接口中只能定義抽象方法,而這些方法默認(rèn)為public的,也只能是publico接口可以繼承其他接口,并添加新的屬性和抽象方法。十.異常處理異常的概念java異常是java提供的用于處理程序中錯(cuò)誤的一種機(jī)制。所謂錯(cuò)誤是指在程序運(yùn)行過(guò)程中發(fā)生的一些異常事件。設(shè)計(jì)良好的程序,應(yīng)該在異常發(fā)生時(shí)提供處理這些錯(cuò)誤的方法,使得程序不會(huì)因?yàn)楫惓5陌l(fā)生而阻斷或者產(chǎn)生不可預(yù)見(jiàn)的結(jié)果。java程序執(zhí)行過(guò)程中如果出現(xiàn)異常事件,可以生成一個(gè)異常類的對(duì)象,該異常事件封裝了異常的信息,并將被提交給java運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程稱作拋出(throw)異常。當(dāng)java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象時(shí),會(huì)尋找能處理這一異常的代碼,并把當(dāng)前異常對(duì)象交給其處理,這一過(guò)程稱作捕獲(catch)異常。異常的分類(1)Throwable9/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇ExceptionErrorRuntimeExceptionError:錯(cuò)誤,由java虛擬機(jī)生成拋出,包括動(dòng)態(tài)連接失敗,虛擬機(jī)錯(cuò)誤等,程序不對(duì)其做處理。Exception:所有異常類的父類,其子類對(duì)應(yīng)了各種各樣的異常事件,一般需要用戶顯示的聲明或者捕獲。RuntimeException:—類特殊的異常,其產(chǎn)生比較頻繁,處理麻煩,如果顯示的聲明或者捕獲對(duì)于程序的可讀性和運(yùn)行效率影響很大,因此由系統(tǒng)自動(dòng)檢測(cè)并將把他們交給缺省的異常處理程序。(用戶不必對(duì)其處理)Exceptioninjava.langClassNotFoundExceptionIOExceptionInterruptedExceptionRuntimeExceptionArithmeticExceptionNullPointerExceptionIndexOutofBoundsExceptionArrayIndexOutofBoundsExceptionStringIndexOutofBoundsException異常的捕獲和處理(1)try代碼片段包含可能產(chǎn)生例外的代碼。(2)try代碼片段后跟一個(gè)或者多個(gè)catch代碼段。(3)每個(gè)catch代碼段聲明其能處理的一個(gè)特定異常的類型并提供處理該異常的方法。(4)當(dāng)異常發(fā)生時(shí),程序會(huì)終止當(dāng)前的流程,根據(jù)獲取異常的類型去執(zhí)行相應(yīng)的catch代碼段。finally段的代碼無(wú)論發(fā)生異常與否都會(huì)執(zhí)行。try語(yǔ)句try{..}語(yǔ)句指定一段代碼,該段代碼就是一次捕獲并處理異常的例外代碼。在執(zhí)行過(guò)程中,該代碼可能會(huì)產(chǎn)生并拋出一種或者幾種類型的異常對(duì)象,它后面的catch語(yǔ)句要分別對(duì)這些異常做對(duì)應(yīng)的異常處理。如果沒(méi)有例外出現(xiàn),則catch的代碼片段都將被略過(guò)不執(zhí)行。catch語(yǔ)句在catch語(yǔ)句塊中是對(duì)異常進(jìn)行處理的代碼,每個(gè)try語(yǔ)句可以伴隨一個(gè)或者多個(gè)catch語(yǔ)句,用于處理產(chǎn)生的不同類型的異常對(duì)象。在catch中聲明的異常對(duì)象(catch(SomeExceptione))封裝了異常事件發(fā)生的信息,在catch語(yǔ)句塊中可以使用這個(gè)對(duì)象的方法來(lái)獲取這些信息。getMessage()方法:用來(lái)得到有關(guān)異常事件的信息。printStackTrace()方法:用來(lái)跟蹤異常事件發(fā)生時(shí)執(zhí)行堆棧的內(nèi)容。finally語(yǔ)句finally語(yǔ)句為異常處理提供了統(tǒng)一的出口,使得在控制流程在轉(zhuǎn)到其他程序的其他部分以前,能夠?qū)Τ绦虻臓顟B(tài)做出統(tǒng)一的管理。無(wú)論try所指定的程序語(yǔ)句塊是否拋出異常,finally所指定的語(yǔ)句塊都要被執(zhí)行。通常在finally語(yǔ)句塊中可以進(jìn)行資源的清除,如:關(guān)閉打開(kāi)的文件,刪除臨時(shí)的文件等。7java的異常處理機(jī)制使得異常事件,沿著被調(diào)用的順序往前尋找,只要找到符合該異常10/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇種類的異常處理事件。8使用自定義異常通過(guò)繼承java.lang.Exception類來(lái)聲明自己的異常類。在方法適當(dāng)?shù)奈恢枚x異常類的實(shí)例,并用throw拋出異常。在方法的聲明部分用throws語(yǔ)句聲明該方法可能要拋出的異常。重寫(xiě)方法要拋出與原方法一致的異?;蛘卟粧伋霎惓?。十一.數(shù)組數(shù)組的概述數(shù)組可以看成是多個(gè)相同數(shù)據(jù)類型的組合,對(duì)這些數(shù)據(jù)的統(tǒng)一管理。數(shù)組變量屬引用類型,數(shù)組也可看成是對(duì)象,數(shù)組中的每個(gè)成員都相當(dāng)于對(duì)象中的成員變量。數(shù)組中的數(shù)據(jù)類型可以是任何的數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。一維數(shù)組一維數(shù)組的聲明方式:typevar[]或者type[]varjava語(yǔ)言中聲明數(shù)組時(shí)不能指定數(shù)組的長(zhǎng)度(數(shù)組中元素的個(gè)數(shù))。數(shù)組對(duì)象的創(chuàng)建java語(yǔ)言中使用new關(guān)鍵字創(chuàng)建數(shù)組對(duì)象,格式為:數(shù)組名=new數(shù)組元素類型[數(shù)組元素個(gè)數(shù)]元素為引用數(shù)據(jù)類型的數(shù)組中的每一個(gè)元素都需要對(duì)其進(jìn)行實(shí)例化。數(shù)組的動(dòng)態(tài)初始化數(shù)組的定義與數(shù)組的元素分配空間和賦值的操作分開(kāi)進(jìn)行數(shù)組的靜態(tài)初始化定義數(shù)組的同時(shí)就為數(shù)組分配空間和賦值。數(shù)組元素的默認(rèn)初始化(1)數(shù)組是引用類型,它的元素相當(dāng)于類的成員變量,因此數(shù)組分配空間后,每個(gè)元素也被按照成員變量的規(guī)則被隱式初始化數(shù)組元素的引用定義并用new關(guān)鍵字為其分配空間后,才可以引用數(shù)組中的每個(gè)元素,數(shù)組元素的引用方式為:arrayName[index]:index為數(shù)組元素的下標(biāo),可以是整形常量或者整形表達(dá)式。數(shù)組元素下標(biāo)從0開(kāi)始:長(zhǎng)度為n的數(shù)組合法下標(biāo)取值范圍為:0~n-1每個(gè)數(shù)組都有一個(gè)length屬性指明其長(zhǎng)度。二維數(shù)組可以看作是數(shù)組的數(shù)組。java中多維數(shù)組的聲明和初始化都應(yīng)該從高維到低維的順序進(jìn)行。(3)靜態(tài)初始化和動(dòng)態(tài)初始化數(shù)組的拷貝使用java.lang.System的靜態(tài)方法,publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)可以用于數(shù)組src從地srcPos項(xiàng)元素開(kāi)始的length個(gè)元素拷貝到目標(biāo)數(shù)組從destPos項(xiàng)開(kāi)始的length個(gè)位置。如果源數(shù)據(jù)數(shù)目超過(guò)目標(biāo)數(shù)組邊界會(huì)拋出IndexOutofBoundsException異常。十二.常用類String類11/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇java.lang.String類代表不可變的字符序列?!癤XXX”為該類的一個(gè)對(duì)象。Strig類的常見(jiàn)構(gòu)造方法:String(Stringoriginal)創(chuàng)建一個(gè)String對(duì)象為original的拷貝String(char[]value)用一個(gè)字符數(shù)組創(chuàng)建一個(gè)String對(duì)象String(char[]value,intoffset,intcount)用一個(gè)字符數(shù)組從offset開(kāi)始的count個(gè)字符序列創(chuàng)建一個(gè)String對(duì)象publiccharcharAt(intindex)返回字符串中第index個(gè)字符publicintlength()返回字符串的長(zhǎng)度publicintindexOf(Stringstr)返回字符串中出現(xiàn)str的第一個(gè)位置publicintindexOf(Stringstr,intformatIndex)返回從字符串中formatindex開(kāi)始出現(xiàn)str的第一個(gè)位置publicbooleanequalsIgnoreCase(Stringanother)比較字符串與another是否一樣(忽略大小寫(xiě))publicStringreplace(charoldChar,charnewChar)在字符串中用newChar代替oldChar字符publicbooleanstartsWith(Stringprefix)判斷字符串是否以prefix開(kāi)頭publicbooleanendsWith(Stringsuffix)判斷字符串是否以suffix結(jié)尾publicStringtoUpperCase()返回一個(gè)字符串為該字符串的大寫(xiě)publicStringtoLowerCase()返回一個(gè)字符串為該字符串的小寫(xiě)publicStringsubstring(StringbeginIndex)返回該字符串從beginIndex開(kāi)始到結(jié)尾的子字符串publicStringsubstring(StringbeginIndex,StringendIndex)返回該字符串從beginindex開(kāi)始到endindex結(jié)束的子字符串publicStringtrim()返回將該字符串去掉開(kāi)頭和結(jié)尾空格后的字符串。(4)靜態(tài)重載方法:publicstaticStringvalueOf()可以將基本類型數(shù)據(jù)轉(zhuǎn)化為字符串方法publicString]]split(Stringregex)可以將一個(gè)字符串按照指定的分隔符分隔,返回分隔后的字符串?dāng)?shù)組。StringBuffer類java.lang.StringBufffer代表可變的字符序列。StringBuffer和String類似,但StringBuffer可以對(duì)其字符序列進(jìn)行變換。StringBuffer類的常見(jiàn)構(gòu)造方法;StringBuffer()創(chuàng)建一個(gè)不包含字符序列的”空”的StringBuffer對(duì)象。StringBuffer(Stringstr)創(chuàng)建一個(gè)StringBuffer對(duì)象,包含與String對(duì)象str相同的字符序列。重載方法publicStringBufferappend(…)可以為該StringBuffer對(duì)象添加字符序列,返12/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇回添加后的該StringBuffer對(duì)象的引用。重載方法publicStringBufferinsert(…)可以為該StringBuffer對(duì)象在指定的位置插入字符序列,返回修改后的該StringBuffer對(duì)象的引用。方法publicStringBufferdelete(intstart,intend)可以刪除從start開(kāi)始到end-1為止的一段字符序列,返回修改后的該StringBuffer對(duì)象的引用。和String類含義類似的方法publicintindexOf(Stringstr)publicintindexOf(Stringstr,StringformatIndex)publicStringsubstring(intstart)publicStringsubstring(intstart,intend)publicintlength()(8)方法publicStringBufferreverse()用于將字符序列逆序,返回修改后的該StringBuffer對(duì)象的引用?;緮?shù)據(jù)類型包裝類包裝類(如Integer,Double等)這些類封裝了一個(gè)基本數(shù)據(jù)類型的數(shù)值,并為其提供了一系列的操作。(2)以java.lang.Integer為例:構(gòu)造方法Integer(intvalue)Integer(Strings)(3)以下方法以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對(duì)象,其中封裝的整形數(shù)據(jù)為字符串s所表示。Math類(1)java.lang.Math提供了一系列方法用于科學(xué)計(jì)算,其方法的參數(shù)和返回值類型一般為double型。abs絕對(duì)值acos,asin,atan,cos,sin,tansqrt平方根pow(doublea,doubleb)a的b次冪log自然對(duì)數(shù)expe為底指數(shù)max(doublea,doubleb)min(doublea,doubleb)random()返回0.0到1.0的隨機(jī)數(shù)longround(doublea)double型的數(shù)據(jù)轉(zhuǎn)化為L(zhǎng)ong型(四舍五入)/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇toDegrees(doubleangrad)弧度轉(zhuǎn)化為角度toRadians(doubleangdeg)角度轉(zhuǎn)化為弧度File類java.io.File代表系統(tǒng)文件名(路徑和文件名)。File類的常見(jiàn)構(gòu)造方法:publicFile(Stringpathname)以pathname為路徑創(chuàng)建File對(duì)象,如果,pathname是相對(duì)路勁,則默認(rèn)的當(dāng)前路徑在系統(tǒng)屬性u(píng)ser,dir中存儲(chǔ)。publicFile(Stringparent,Stringchild)以parent為父路徑,以child為子路徑創(chuàng)建File對(duì)象。File的靜態(tài)屬性Stringseparator存儲(chǔ)了當(dāng)前系統(tǒng)路徑的分隔符。通過(guò)File對(duì)象可以訪問(wèn)文件的屬性:publicbooleancanRead()publicbooleancanWrite()publicbooleanexists()publicbooleanisDirectory()publicbooleanisFile()publicbooleanisHidden()publiclonglastModified()publiclonglength()publicStringgetName()publicStringgetPath()通過(guò)File對(duì)象創(chuàng)建空文件或目錄(在該對(duì)象所指的文件或者目錄不存在的情況下)publicbooleancreateNewFile()throwsIOExceptionpublicbooleandelete()publicbooleanmkdir()publicbooleanmkdirs()〃創(chuàng)建在路徑中的一系列目錄java.lang.Enum枚舉類型(1)枚舉類型:只能夠取特定值中的一個(gè)。使用enum關(guān)鍵字是java.lang.Enum類型十三.容器j2sdk所提供的容器的API位于java.util包中。容器API圖構(gòu)如下:Collection(interface)Set(interface)List(interface)HashSet LinkedListArrayListMapHashMapcollection接口定義了存取一組對(duì)象的方法,其子接口set和List定義了存儲(chǔ)方式。set中的數(shù)據(jù)對(duì)象無(wú)序且不重復(fù)。list中的數(shù)據(jù)對(duì)象有序且可以重復(fù)。/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇Map接口定義了存儲(chǔ)“鍵(Key)—值(value)映射對(duì)”的方法。Collection接口中定義的方法:intsize();booleanisEmpty();voidclear();booleancontains(Objectelement)booleanadd(Objectelement)booleanremove(Objectelement)Iteratoriterator()booleancontainsAll(Collectionc)booleanaddAll(Collectionc)booleanremoveAll(Collectionc)booleanretainAll(Collectionc)Object[]toArray()容器類對(duì)象在調(diào)用remove,contains等方法時(shí)需要比較對(duì)象是否相等,這會(huì)涉及到對(duì)象類型的equals方法和hashCode方法;對(duì)于自定義的類型,需要重寫(xiě)equals方法和hashCode方法以實(shí)現(xiàn)自定義的對(duì)象相等的規(guī)則。相等的對(duì)象應(yīng)該具有相等的hashcodes。Iterator接口所有實(shí)現(xiàn)Collection接口的容器類都有一個(gè)iterator方法用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象。Iterator對(duì)象稱為迭代器,用以方便實(shí)現(xiàn)對(duì)容器內(nèi)部元素的遍歷。Iterator接口定義的方法:booleanhasNext()判斷游標(biāo)右邊是否有元素Objectnext()返回游標(biāo)右邊的元素并且將游標(biāo)移動(dòng)到下一個(gè)位置Voidremove()刪除游標(biāo)左邊的元素,在執(zhí)行完next之后此操作只可以執(zhí)行一次Iterator對(duì)象的remove方法是在迭代過(guò)程中刪除元素的唯一的安全方法。增強(qiáng)的for循環(huán)(1)增強(qiáng)的for循環(huán)對(duì)于遍歷collection和array的時(shí)候特別方便。(2)缺陷:數(shù)組:不能方便的訪問(wèn)下標(biāo)值。集合:與使用Iterator相比,不能方便刪除集合中的內(nèi)容,在內(nèi)部也是調(diào)用Iterato??偨Y(jié):除了簡(jiǎn)單遍歷并讀出其中的內(nèi)容外,不建議使用增強(qiáng)for。set接口set接口是collection的子接口,set接口沒(méi)有提供額外的方法,但是實(shí)現(xiàn)set接口的容器類中的元素是沒(méi)有有順序的,而且不可以重復(fù)。set容器可以與數(shù)學(xué)中的“集合”概念相對(duì)應(yīng)。j2sdkAPI中所提供的set容器類有HashSet,TreeSet等。List接口(1)List接口是collection的子接口,實(shí)現(xiàn)List接口的容器類中的元素是有順序的并且可以重復(fù)的。(2)List容器中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素。/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇j2sdk所提供的List容器類有LinkedList,ArrayList等。Objectget(intindex)Objectset(intindex,Objectelement)Objectremove(intindex)intindexOf(Objecto)intlastIndexOf(Objecto)10類java.util.Collections提供了一些靜態(tài)方法實(shí)現(xiàn)了基于List容器的一些常用算法。voidsort(List)對(duì)List容器內(nèi)的元素排序voidshuffle(List)對(duì)List容器內(nèi)的元素進(jìn)行隨機(jī)排列voidreverse(List)對(duì)List容器內(nèi)的元素進(jìn)行逆序排列voidfill(List,Object)用一個(gè)特定的對(duì)象重寫(xiě)整個(gè)容器voidcopy(Listdest,Listsrc)將srcList容器的內(nèi)容拷貝到destList容器中intbinarySearch(List,Object)對(duì)于順序的List容器,采用折半查找法查找特定的對(duì)象。11.Comparable接口所有可以排序的類都實(shí)現(xiàn)了java.Iang.Comparable接口,Comparable接口中只有一個(gè)方法,publicintcompareTo(Objectobj)該方法:返回0表示this==obj返回正數(shù)表示this>obj返回負(fù)數(shù)表示this<obj實(shí)現(xiàn)Comparable接口的類通過(guò)實(shí)現(xiàn)compareTo()方法從而確定該類對(duì)象的排序方式。如何選擇數(shù)據(jù)結(jié)構(gòu)衡量標(biāo)準(zhǔn):讀的快慢和改的快慢Array讀的快改的慢Linked讀的慢改的快(3)Hash兩者之間Map接口實(shí)現(xiàn)Map接口的類用來(lái)存儲(chǔ)鍵值對(duì)。Map接口實(shí)現(xiàn)的類有HashMap和TreeMap。Map類中存儲(chǔ)的鍵值對(duì)通過(guò)鍵來(lái)標(biāo)識(shí),所以鍵值不可以重復(fù)。Auto-boxing/unboxing(1)在合適的時(shí)候自動(dòng)打包解包①自動(dòng)將基礎(chǔ)類型轉(zhuǎn)化為對(duì)象自動(dòng)將對(duì)象轉(zhuǎn)化為基礎(chǔ)類型JDK1.5泛型(1)起因:JDK1.4以前類型不清楚裝入集合中的類型都被當(dāng)作Object對(duì)待,從而失去自己的實(shí)際類型。從集合中取出時(shí)往往需要轉(zhuǎn)型,效率低,容易產(chǎn)生錯(cuò)誤。(2)解決辦法:/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇在定義集合的時(shí)候同時(shí)定義集合中對(duì)象的類型。可以在定義Collection時(shí)指定。也可以在循環(huán)時(shí)使用Iterator指定。(3)好處:增強(qiáng)程序的可讀性和穩(wěn)定性。十四.流在java程序中,對(duì)于數(shù)據(jù)的輸入和輸出操作以流(stream)方式,將將j2sdk提供了各種各樣的流類,用以獲取不同的數(shù)據(jù),程序中通過(guò)標(biāo)準(zhǔn)的方法輸入或者輸出數(shù)據(jù)。輸入/輸出流的分類(1) java.io包中定義了多個(gè)流類型(類或抽象類)來(lái)實(shí)現(xiàn)輸入/輸出功能,可以從不同的角度對(duì)其進(jìn)行分類。(2) 按照數(shù)據(jù)流的方向不同分為輸入流和輸出流。(3) 按照數(shù)據(jù)處理單位不同分為字節(jié)流和字符流。(4) 按照功能不同劃分為節(jié)點(diǎn)流和處理流。(5) J2sdk所提供的所有流類型位于java.io包內(nèi),分別繼承自以下四種抽象流類型。字節(jié)流字符流3.節(jié)點(diǎn)流和處理流(1) 節(jié)點(diǎn)流為可以從一個(gè)特定的數(shù)據(jù)源(節(jié)點(diǎn))讀寫(xiě)數(shù)據(jù)。(2) 處理流是“連接”在已經(jīng)存在的流(節(jié)點(diǎn)流或者處理流)之上,通過(guò)對(duì)數(shù)據(jù)的處理為程序提供更強(qiáng)大的讀寫(xiě)能力。4.(1)lnputStream:繼承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)類型字符流字節(jié)流FilelnputStreamFileReaderFile(文件)FileOutputStreamFileWriterCharArrayReaderMemoryArrayByteArraylnputStreamCharArrayWriterByteArrayOutputStreamMemoryStringStringReader—StringWriterPipedReaderPipedlnputStream(管道)PipePipedWriterPipedOutputStream6緩沖流(1)緩沖流要套接在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫(xiě)的數(shù)據(jù)提供了緩沖的功能,提高了讀寫(xiě)的效率同時(shí)增加了一些新的方法。(2)j2sdk提供了四種緩沖流BufferedReaderBufferedWriterBufferedlnputStream/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇BufferedOutputStream(3)緩沖輸入流具有支持父類的mark和reset方法。BufferedReader提供了readLine()用于讀取一行字符串(以\r或者\(yùn)n分隔)Bufferedwriter提供了newLine用于寫(xiě)入一個(gè)行分隔符對(duì)于輸出的緩沖流,寫(xiě)出的數(shù)據(jù)會(huì)現(xiàn)在內(nèi)存中緩沖,使用flush方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫(xiě)出。7.轉(zhuǎn)換流lnputStreamReader和OutputStreamWriter用于字節(jié)數(shù)據(jù)和字符數(shù)據(jù)之間的轉(zhuǎn)換。lnputStreamReader需要和lnputStream套接。OutputStreamWriter需要和Outputstream套接。(4)轉(zhuǎn)換流可以在構(gòu)造的時(shí)候指定其編碼集合。8.處理流處理類型字符流字節(jié)流BufferingBufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStreamFilteringFilterReaderFilterWriterFilterInputStreamFilterOutputStreamConvertingbetweenbytesandcharactersInputStreamReaderOutputStreamWriterObjectserializationObjectInputStreamObjectOutputStreamDataConversionDataInputStreamDataOutputStreamCountingLineNumberReaderLineNumberInputStreamPeekingaheadPushBackReaderPushBackInputStreamPrintingPrintWriterPrintStream數(shù)據(jù)流DatalnputStream和DataOutputStream分別繼承自Inputstream和Outputstream,他們都是處理流。需要分別套接在InputStream和OutputStream的類型的節(jié)點(diǎn)流之上。DatalnputStream和DataOutputStream提供可以存取與機(jī)器無(wú)關(guān)的java原始類型數(shù)據(jù)(如int,double)等原始類型數(shù)據(jù)。DataInputStream和DataOutputStream的構(gòu)造方法:DataInputStream(InputStreamin)DataOutputStream(OutputStreamout)Print流PrintStream和PrintWriter都屬于輸出流,分別針對(duì)字節(jié)和字符。PrintStream和PrintWriter提供了重載的print。PrintStream和PrintWriter的輸出操作不會(huì)拋出異常,用戶通過(guò)檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。PrintStream和PrintWriter有自動(dòng)flush功能。println方法用于多種類型數(shù)據(jù)的輸出。11.Object流(1)直接將Oject寫(xiě)入或者讀出TestObjectlO.java/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇transient關(guān)鍵字serializable關(guān)鍵字externalizable關(guān)鍵字十五.java多線程機(jī)制線程的基本概念(1)線程是一個(gè)程序內(nèi)部的順序控制流。線程和進(jìn)程的區(qū)別每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間(進(jìn)程上下文),進(jìn)程間的切換會(huì)有較大的開(kāi)銷。線程可以看作是輕量級(jí)的進(jìn)程,同一類進(jìn)程共享代碼和數(shù)據(jù)空間,每個(gè)線程都有獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(PC),線程切換開(kāi)銷小。多進(jìn)程:在操作系統(tǒng)中可以同時(shí)運(yùn)行多個(gè)任務(wù)(程序)。多線程:在同一應(yīng)用程序中有多個(gè)順序流同時(shí)執(zhí)行。java的線程是通過(guò)java.lang.Thread來(lái)實(shí)現(xiàn)的。VM啟動(dòng)時(shí)會(huì)有由一個(gè)主方法(publicstaticvoidmain())所定義的線程??梢酝ㄟ^(guò)創(chuàng)建Thread的實(shí)例來(lái)創(chuàng)建新的線程。每個(gè)線程都是通過(guò)某個(gè)特定的Thread對(duì)象所對(duì)應(yīng)的run()方法來(lái)實(shí)現(xiàn)操作的,方法run()稱為線程體。通過(guò)調(diào)用Thread類的一個(gè)start()方法來(lái)啟動(dòng)一個(gè)線程。線程的創(chuàng)建和啟動(dòng)(1)第一種定義線程類實(shí)現(xiàn)Runnable接口。ThreadmyThread=newThread(target)//target為Runnable接口類型。Runnable中只有一個(gè)方法:publicvoidrun():用以定義線程運(yùn)行體。使用Runnable接口可以為多個(gè)線程提供共享的數(shù)據(jù)。在實(shí)現(xiàn)Runnable接口的類的run方法定義中可以使用Thread的靜態(tài)方法。publicstaticThreadcurrentThread():獲取當(dāng)前線程的引用(2)第二種可以定義一個(gè)Thread類的子類重寫(xiě)Thread類的run方法classMyThreadextendsThread{publicvoidrun(){…}}生成該類的對(duì)象MyThreadmyThread=newMyThread()線程狀態(tài)轉(zhuǎn)化/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇設(shè)阻塞的耕阻塞解除start()調(diào)度設(shè)阻塞的耕阻塞解除start()調(diào)度1運(yùn)行財(cái)尤態(tài)4.線程控制的基本方法方法功能isAlive()判斷線程是否還活著,即判斷線程是否還未終止。getPriority()獲取線程優(yōu)先級(jí)數(shù)值setPriority()設(shè)置線程優(yōu)先級(jí)的數(shù)值Thread.sleep()將當(dāng)前線程睡眠指定毫秒數(shù)join()調(diào)用某線程的該方法,將當(dāng)刖線程與該線程“合并”,即等待該線程結(jié)束,在恢復(fù)當(dāng)前線程的運(yùn)行。yield()讓出cpu,當(dāng)前線程進(jìn)入就緒隊(duì)列等待調(diào)度。wait()當(dāng)前線程進(jìn)入對(duì)象的waitpool。notify()/notifyAll()喚醒對(duì)象waitpool中的一個(gè)或者所有的等待的線程。sleep方法(1)可以調(diào)用Thread的靜態(tài)方法:publicstaticvoidsleep(longmillis)throwsInterruptedException使得當(dāng)前的線程睡眠(暫時(shí)停止執(zhí)行millis毫秒數(shù))(2)由于是靜態(tài)方法,sleep可以直接由類名調(diào)用:Thread.sleep(…)線程的優(yōu)先級(jí)別(1)java提供一個(gè)線程調(diào)度器來(lái)控制程序中啟動(dòng)后進(jìn)入就緒狀態(tài)的所有線程。線程調(diào)度器按照線程的優(yōu)先級(jí)決定應(yīng)調(diào)度哪個(gè)線程來(lái)執(zhí)行。線程的優(yōu)先級(jí)用數(shù)字表示,范圍1~10,一個(gè)線程的缺省優(yōu)先級(jí)是5.Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Threa.NORM_PRIORITY=5;使用下述方法設(shè)置或者獲取線程對(duì)象的優(yōu)先級(jí)intgetPriority()voidsetPriority(intnewPriority)7.線程同步(1)在Java語(yǔ)言中,引入對(duì)象互斥鎖概念,保證共享數(shù)據(jù)操作的完整性,每個(gè)對(duì)象都對(duì)應(yīng)于一個(gè)可稱為“互斥鎖”的標(biāo)記,這標(biāo)記保證在任何一時(shí)刻,只有一個(gè)線程訪問(wèn)該對(duì)象。(2)關(guān)鍵字synchronized來(lái)與對(duì)象的互斥鎖聯(lián)系,當(dāng)某個(gè)對(duì)象synchronized修飾時(shí),表明該對(duì)象在任何一個(gè)時(shí)刻都只能由一個(gè)線程訪問(wèn)。(3)synchrronized還可以放在方法聲明中,表示整個(gè)方法是同步方法。/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇wait和sleep的區(qū)別wait時(shí)別的線程可以訪問(wèn)鎖定的對(duì)象。(2)調(diào)用wait方法時(shí)必須鎖定該對(duì)象。Sleep時(shí)別的線程也不可以訪問(wèn)鎖定對(duì)象。
十六.網(wǎng)絡(luò)編程網(wǎng)絡(luò)基礎(chǔ)概念(1) 計(jì)算機(jī)網(wǎng)絡(luò)把分布在不同地區(qū)的計(jì)算機(jī)與專門的外部設(shè)備用通信線路互連成一個(gè)規(guī)模大、功能強(qiáng)的網(wǎng)絡(luò)系統(tǒng)從而使更多的計(jì)算機(jī)可以方便的相互傳遞信息,共享軟件,硬件,數(shù)據(jù)信息等資源。(2) 計(jì)算機(jī)網(wǎng)絡(luò)的主要功能資源共享信息傳輸與集中處理均衡負(fù)荷與分布處理綜合信息服務(wù)網(wǎng)絡(luò)通信協(xié)議及接口(1) 網(wǎng)絡(luò)通信協(xié)議計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)通信必須有一些約定即通信協(xié)議,對(duì)速率,傳輸代碼,代碼結(jié)構(gòu),傳輸控制步驟,出錯(cuò)控制等制定標(biāo)準(zhǔn)。(2) 網(wǎng)絡(luò)通信接口為使兩個(gè)節(jié)點(diǎn)之間可以通話,必須在他們之間建立通信工具(接口),使彼此之間可以進(jìn)行信息交換。接口包括兩部分:硬件裝置:實(shí)現(xiàn)節(jié)點(diǎn)之間的信息傳輸;軟件裝置:規(guī)定雙方進(jìn)行通信的約定協(xié)議。通信協(xié)議分層思想(1) 為什么要分層由于節(jié)點(diǎn)之間聯(lián)系很復(fù)雜,在制定協(xié)議時(shí),把復(fù)雜成分分解成一些簡(jiǎn)單的成分,再將他們符合起來(lái),最常用的符合方式是層次方式,即同層間可以通信,上一層可以調(diào)用下一層,而與再下一層不發(fā)生關(guān)系,各層互不影響,利于系統(tǒng)的開(kāi)發(fā)和擴(kuò)展。OSI參考模型TCP/IP參考模型應(yīng)用層應(yīng)用層表示層會(huì)話層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層物理+數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層物理層5.數(shù)據(jù)封裝21/26李勇勇東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇數(shù)據(jù)FC傳輸跟制信勸 上F數(shù)據(jù)I邏輯鏈路于展控制信」上辰數(shù)據(jù)|數(shù)折Packet數(shù)據(jù)鏈路誤Frame網(wǎng)蛛広擰制信息應(yīng)用層物埋層我示層會(huì)話懇傳篩層Segmenl0101110101001000010數(shù)據(jù)拆分6.IP協(xié)議7.)協(xié)議是網(wǎng)際層的只要協(xié)議,支持網(wǎng)間互聯(lián)的數(shù)據(jù)報(bào)通信‘InternetProtocollPI)((他提供的主要功能有:無(wú)連接數(shù)據(jù)報(bào)傳送;數(shù)據(jù)報(bào)路由選擇和差錯(cuò)控制。Bit%:Bits;1 Ba If;燈 7475 39HoseHastHostHange(M26)1 F9 1fi17 947A 39Ho^tHostfUngg(12S-131Bits;1 S9 1£1?2』I25 32|HostRemgeTf^SSJ協(xié)議和UDP協(xié)議8.TCP)協(xié)議是專門設(shè)計(jì)用在不可靠的因特網(wǎng)上提供()TCPtransmissioncontrolprotocoll(連接是字TCP端到端的字節(jié)流通信的協(xié)議,可靠的,他是一種面向連接的協(xié)議。節(jié)流而非報(bào)文流。22/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 李勇勇(2)UDP(userdataprotocol)協(xié)議向應(yīng)用程序提供一種發(fā)送封裝的原始IP數(shù)據(jù)報(bào)的方法,而且發(fā)送時(shí)無(wú)需建立連接,是一種不可靠的連接。Socket兩個(gè)java應(yīng)用程序可以通過(guò)一個(gè)雙向的網(wǎng)絡(luò)通信連接實(shí)現(xiàn)數(shù)據(jù)交換,這個(gè)雙向連接的一端稱為一個(gè)Socket。Socket通常用來(lái)實(shí)現(xiàn)client-server連接。包中定義了兩個(gè)類,Socket和ServerSocket,分別用來(lái)實(shí)現(xiàn)雙向連接的client端和server端。建立連接時(shí)所需的尋址信息為遠(yuǎn)程計(jì)算機(jī)的IP地址和端口號(hào)(PortNumber)TCP端口和UDP端口是分開(kāi)的。每一個(gè)65536個(gè)端口。TCPSocket通信模型十七.GUI編程AWTAWT(abstractwindowtoolkit)包括了很多類和接口,用于javaapplication的GUI(GraphicsuserInterface)編程。GUI的各種元素由java來(lái)實(shí)現(xiàn)。(3)使用AWT所涉及的類一般都在java.awt這個(gè)包里。(4)Container和Component是兩個(gè)核心類。
Container&Component李勇勇/26東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院李勇勇(1)java圖形用戶界面的最基本組成部分是Component,Component類極其子類對(duì)象都用來(lái)描述以圖形化的方式顯示在屏幕上,并能與用戶進(jìn)行交互的GUI元素。—般的Component對(duì)象不可以獨(dú)立的顯示出來(lái),必須將“放在“某一Container對(duì)象中才可以顯示出來(lái)。Container是Component的子類,Container子類對(duì)象可以容納其他的Component對(duì)象。C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《營(yíng)養(yǎng)膳食與衛(wèi)生》課程標(biāo)準(zhǔn)
- 《行政職業(yè)能力測(cè)驗(yàn)》山西省晉城市高平市2024年公務(wù)員考試模擬試題含解析
- 2024年農(nóng)研所上半年工作總結(jié)
- 《知情保密原則》課件
- 《華為戰(zhàn)略管理》課件
- 《車輛運(yùn)行安全管理》課件
- 2019年高考語(yǔ)文試卷(新課標(biāo)Ⅱ卷)(解析卷)
- 康復(fù)口腔科護(hù)士的職業(yè)發(fā)展
- 2023-2024年項(xiàng)目部安全管理人員安全培訓(xùn)考試題綜合題
- 2024企業(yè)主要負(fù)責(zé)人安全培訓(xùn)考試題附答案(綜合題)
- JJG(交通) 124-2023 公路斷面探傷及結(jié)構(gòu)層厚度探地雷達(dá)
- 安全培訓(xùn)機(jī)構(gòu)教師登記表
- 氣管切開(kāi)病人疑難病例討論
- 部編版八年級(jí)上冊(cè)語(yǔ)文期末試卷及參考答案可打印
- 洗胃的急救與護(hù)理
- 2024年紀(jì)檢監(jiān)察綜合業(yè)務(wù)知識(shí)題庫(kù)及答案(新)
- 師德師風(fēng)考核實(shí)施方案
- 膀胱憩室護(hù)理查
- 2024年河南省水務(wù)規(guī)劃設(shè)計(jì)研究有限公司人才招聘筆試參考題庫(kù)附帶答案詳解
- 工程制圖知識(shí)要點(diǎn)
- 2024山東能源集團(tuán)中級(jí)人才庫(kù)選拔高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論