JAVA期末考前復(fù)習(xí)要點(diǎn)_第1頁(yè)
JAVA期末考前復(fù)習(xí)要點(diǎn)_第2頁(yè)
JAVA期末考前復(fù)習(xí)要點(diǎn)_第3頁(yè)
JAVA期末考前復(fù)習(xí)要點(diǎn)_第4頁(yè)
JAVA期末考前復(fù)習(xí)要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩121頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟮某绦蛟O(shè)計(jì)上海財(cái)經(jīng)大學(xué)信息管理與工程學(xué)院考前復(fù)習(xí)2017考試題型判斷題〔2分*10個(gè),共計(jì)20分〕不定項(xiàng)選擇題〔2分*15個(gè),共計(jì)30分〕程序閱讀題〔5分*5個(gè),共計(jì)25分〕編程題〔3個(gè)答題,合計(jì)25分〕重點(diǎn)在于復(fù)習(xí)課上指出的有關(guān)例題2考核范圍以課堂PPT為藍(lán)本,以郎波老師的教材為根底。不考或少考:數(shù)據(jù)庫(kù)不考內(nèi)容:Applet、JSP、JS3主要考核知識(shí)點(diǎn)第一局部消息:定義、情況及構(gòu)成Java可以跨平臺(tái)的原因:JVMApplication程序創(chuàng)立過(guò)程:編譯—javac.exe解釋執(zhí)行—java.exe聚合、關(guān)聯(lián),以及兩者之間的關(guān)系。4主要考核知識(shí)點(diǎn)第三局部1標(biāo)識(shí)符定義規(guī)那么數(shù)據(jù)類型之間的互相轉(zhuǎn)換:自動(dòng)轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換數(shù)組類型、長(zhǎng)度、內(nèi)容和地址之間的關(guān)系數(shù)組的初始化5主要考核知識(shí)點(diǎn)第三局部2局部變量和類成員變量的初始化常見(jiàn)數(shù)據(jù)類型根本數(shù)據(jù)類型:復(fù)合數(shù)據(jù)類型:類類型、String、數(shù)組常量邏輯型整型、浮點(diǎn)型字符型:轉(zhuǎn)義字符6數(shù)據(jù)類型的級(jí)別與類型轉(zhuǎn)換運(yùn)算Java中數(shù)據(jù)的根本類型〔不包括邏輯類型〕按精度從“低”到“高”排列:byteshortcharintlongfloatdouble★當(dāng)把級(jí)別低的變量的值賦給級(jí)別高的變量時(shí),系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換。例如:floatx=100;

★當(dāng)把級(jí)別高的變量的值賦給級(jí)別低的變量時(shí),必須使用顯示類型轉(zhuǎn)換運(yùn)算。顯示轉(zhuǎn)換的格式:〔類型名〕要轉(zhuǎn)換的值;例如intx=(int)34.89;★當(dāng)把一個(gè)int型常量賦值給一個(gè)byte和short型變量時(shí),不可以超出這些變量的取值范圍,否那么必須進(jìn)行類型轉(zhuǎn)換運(yùn)算; 例如:bytea=(byte)128;//byte取值范圍為:-128~+127〔即,-27~27-1〕

7整型變量可自動(dòng)轉(zhuǎn)化為浮點(diǎn)型這個(gè)轉(zhuǎn)化可能會(huì)導(dǎo)致?lián)p失精度〔浮點(diǎn)型有特定的精度〕雖然long是8字節(jié),float是4字節(jié),但仍然可以將long自動(dòng)轉(zhuǎn)化為float。8boolean不能和其他類型轉(zhuǎn)換9引用類型變量引用類型變量存儲(chǔ)的是其對(duì)應(yīng)對(duì)象的地址,而不是該對(duì)象的值。在Java中,除根本類型以外的變量均為引用類型變量用戶自己定義的類的變量都是引用類型變量。10數(shù)組數(shù)組中的元素都是同一種類型。數(shù)組的長(zhǎng)度在創(chuàng)立〔不是在聲明時(shí)指定〕的時(shí)候確定,并且在創(chuàng)立后固定不變。數(shù)組的聲明inta[];Date[]d;數(shù)組的創(chuàng)立使用new創(chuàng)立:a=newint[10];使用初始值創(chuàng)立:String[]a={"aa","bb"};數(shù)組變量是引用型:存儲(chǔ)的是數(shù)組內(nèi)容所在內(nèi)存空間的地址。數(shù)組元素索引從0開(kāi)始:String[]a={"aa","bb"}a[0]="aa",a[1]="bb"參考書本p.59~6011數(shù)組關(guān)于數(shù)組聲明表示數(shù)組的"[]

"在數(shù)組變量之后 //C、C++和Java通用的標(biāo)準(zhǔn)格式inta[];Dated[];參考書本p.59~60表示數(shù)組的"[]"

在數(shù)組類型之后表示數(shù)組標(biāo)志"[]"之后出現(xiàn)的所有變量都將是數(shù)組變量 //Java特有的格式int[]a;char[]s,m,n;//聲明了3個(gè)字符型數(shù)組變量s、m和n。聲明不創(chuàng)立數(shù)據(jù)空間,僅僅分配一個(gè)引用空間。12數(shù)組關(guān)于數(shù)組聲明參考書本p.59~60聲明二維數(shù)組有以下兩種格式:數(shù)組的元素類型數(shù)組名[][];數(shù)組的元素類型[][]數(shù)組名;例如:floata[][];Char[][]b;13數(shù)組的初始化使用初始值直接初始化

int[]a={1,2,3,4,5};Date[]d={newDate(),newDate(),newDate()};先聲明后初始化inta[];a=newint[10];

Dated[];d=newDate[3];在聲明的同時(shí)初始化

inta[]=newint[10];

Dated[]=newDate[3];數(shù)組的長(zhǎng)度在創(chuàng)立時(shí)就固定了。如果要在Java中建立長(zhǎng)度可以動(dòng)態(tài)變化的"數(shù)組",可以使用List類。14String類String類在java.lang包中Java把String類聲明為final類,因此不能擴(kuò)展String類。即String類不可以有子類。由于java.lang包中的類被默認(rèn)引入,因此程序可直接使用String類。注意15構(gòu)造字符串對(duì)象1.字符串常量對(duì)象:用西文字符雙引號(hào)括起的字符序列。2.字符串對(duì)象聲明:Strings;創(chuàng)立字符串對(duì)象:s=newString("wearestudents");例如:"你好"、"12.97"、"boy"等。String類較常用構(gòu)造方法:String(s),String(chara[]),String(chara[],intstartIndex,intcount)

startIndex和count分別指定提取字符的起始位置以及從該位置開(kāi)始截取的字符個(gè)數(shù)。

例如:chara[]={'J','a','v','a'};Strings=newString(a);

例如:chara[]={'零','壹','貳','叁','肆','伍','陸','柒','捌','玖'};Strings=newString(a,2,4);

相當(dāng)于:Strings=newString(''貳叁肆伍'');

16構(gòu)造字符串對(duì)象3.引用字符串常量對(duì)象

Strings1,s2;

s1="howareyou";

s2="howareyou";s1,s2具有相同的引用,故具有相同的實(shí)體。17String類的常用方法1.publicintlength():獲取一個(gè)字符串的長(zhǎng)度

2.publicbooleanequals(Strings):比較當(dāng)前字符串對(duì)象實(shí)體的值是否與參數(shù)s指定的字符串實(shí)體的值相同如果:那么:tom.equals(boy)的值為false,tom.equals(jerry)的值為ture。但是:tom==jerry的值為false?!才袛嗍欠裼邢嗤囊谩骋?yàn)樽址畬?duì)象tom、jerry具有相同的引用值,但引用的字符串對(duì)象不同。tom0x54C78天道酬勤boy0xBc66知心朋友jerry0xAb98天道酬勤18String類的常用方法例題8_1說(shuō)明了equals的用法。19主要考核知識(shí)點(diǎn)第三局部3流程控制順序:按語(yǔ)句書寫的先后順序執(zhí)行分支:在假設(shè)干路徑中有條件地?fù)褚粓?zhí)行循環(huán):當(dāng)某條件成立時(shí),反復(fù)執(zhí)行一段代碼20分支〔選擇〕語(yǔ)句if語(yǔ)句if〔條件表達(dá)式〕語(yǔ)句組;if〔條件表達(dá)式〕語(yǔ)句組1;

else語(yǔ)句組2;語(yǔ)句組:用大括號(hào)括起的語(yǔ)句集合else與最近的if配合,用來(lái)消除二義性if條件A{if條件B{

語(yǔ)句組1//A&B

}else{語(yǔ)句組2//A&(!B)

}}21分支〔選擇〕語(yǔ)句〔續(xù)〕嵌套的if-else-if

if(expression) statement; elseif(expression) statement; elseif(expression) ………………. else statement;

if(expression) statement;

else{

if(expression) statement; elseif(expression) ………………. else statement;}22嵌套if-else-if例如例:績(jī)點(diǎn)計(jì)算ji_dian=2.0運(yùn)算結(jié)果:23for循環(huán)語(yǔ)句for循環(huán)語(yǔ)句的語(yǔ)法格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){假設(shè)干語(yǔ)句}for語(yǔ)句的執(zhí)行規(guī)那么是:〔1〕計(jì)算“表達(dá)式1”,完成必要的初始化工作。〔2〕判斷“表達(dá)式2”的值,假設(shè)“表達(dá)式2”的值為true,那么進(jìn)行〔3〕,否那么進(jìn)行〔4〕?!?〕執(zhí)行循環(huán)體,然后計(jì)算“表達(dá)式3”,以便改變循環(huán)條件,進(jìn)行〔2〕。〔4〕結(jié)束for語(yǔ)句的執(zhí)行。

24Java的循環(huán)語(yǔ)句:for〔續(xù)〕求表達(dá)式1(j=0)求表達(dá)式2(j<10)求表達(dá)式3(j++)False循環(huán)體Truefor(j=0;j<10;j++〕 循環(huán)體語(yǔ)句組;25算術(shù)運(yùn)算符二元算術(shù)〔雙目〕運(yùn)算符:+,-,×,/,%“+”可連接字符串“He”+“l(fā)lo”為“Hello”整型、浮點(diǎn)進(jìn)行混合運(yùn)算時(shí),不同類型的數(shù)據(jù)首先轉(zhuǎn)換為同一類型,然后進(jìn)行運(yùn)算,低級(jí)數(shù)據(jù)類型自動(dòng)轉(zhuǎn)化為高級(jí)數(shù)據(jù)類型。注:全是byte或short型操作數(shù),結(jié)果也是int型;26++/--運(yùn)算符用法功能描述++op++op加1;先求op的值,再把op加1++++opop加1;先把op加1,再求op的值--op--op減1;先求op的值,再把op減1----opop減1;先把op減1,再求op的值27運(yùn)算符擴(kuò)展賦值運(yùn)算符二元運(yùn)算符:@=,a@=b即a=a@b〔@為+,-,*,/,%) a+=ba=a+b;運(yùn)算符的優(yōu)先級(jí)一般原那么:算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算符括號(hào)最優(yōu)先28主要考核知識(shí)點(diǎn)第三局部4面向?qū)ο缶幊谈?9Java中的OOP回憶幾個(gè)概念類:抽象的集合概念系統(tǒng)類庫(kù)中已定義好的類用戶自定義的類對(duì)象(實(shí)例,instance):實(shí)際個(gè)體創(chuàng)立某個(gè)類的具體對(duì)象(類似變量聲明)類名欲創(chuàng)立的對(duì)象名=new類名(參數(shù)表);例如:Strings=newString(“Hello!”);Dated=newDate(2007,07,30);繼承、子類、父類子類是父類的特例,繼承了父類的變量和方法;30完整程序一個(gè)java文件最多只有一個(gè)public類,這個(gè)類稱為主類,與java文件名相同。31Java中類的聲明類修飾符〔Modifier〕public:允許其他類〔沒(méi)有限制〕訪問(wèn)本類缺省:可被當(dāng)前包中的其他類訪問(wèn)abstract:沒(méi)有實(shí)例的抽象類,只能創(chuàng)立其子類的實(shí)例。目的:使類的結(jié)構(gòu)清晰,實(shí)現(xiàn)多態(tài)。final:不能再被擴(kuò)展,不包含子類的類;易于平安性的實(shí)現(xiàn),或用于創(chuàng)立固定功能的類;父類繼承聲明:extends父類名實(shí)現(xiàn)接口(interface):implements接口32成員變量的聲明聲明成員變量〔member〕的語(yǔ)法成員變量:在類體中聲明,但不屬于任何一個(gè)方法。[修飾符]數(shù)據(jù)類型變量名;33修飾符:訪問(wèn)控制符成員變量的訪問(wèn)控制符public:可被所有其他類訪問(wèn)protected:該類自身、子類、同一包中的其他類缺省:可被本包中的類訪問(wèn)private:僅可被該類自身訪問(wèn)和修改,不能被其他任何類〔包括子類〕訪問(wèn)34修飾符〔續(xù)〕static:類成員變量(靜態(tài)變量)對(duì)所有的實(shí)例一致引用時(shí)前綴可使用類名或?qū)ο竺鹒inal:程序中不能修改其值即常量,定義的同時(shí)應(yīng)對(duì)其進(jìn)行初始化35成員變量的聲明例如

classCircle{

privatefloatradius;

protectedfloatarea;

staticfloatmaxArea=100.0f;

finalfloatPI=3.1415926f;

……..}static屬性可直接通過(guò)類名引用Circle.maxArea36方法的定義方法的作用定義對(duì)類的成員變量(數(shù)據(jù))的操作方法的定義語(yǔ)法:[修飾符]返回類型方法名〔參數(shù)列表〕[throws異常名]{方法體;}聲明內(nèi)容方法的性質(zhì)、接受哪些參數(shù)、返回什么信息方法聲明部分方法體部分37方法的聲明修飾符訪問(wèn)控制符public,protected,缺省,privatestatic:靜態(tài)方法,又稱類方法。使用類名或?qū)ο竺鳛榍熬Y,建議使用類名作前綴在static型的方法體中,只能訪問(wèn)static變量和自身局部變量?jī)?yōu)點(diǎn):不必對(duì)類實(shí)例化操作就能被其他類使用該方法。可開(kāi)發(fā)通用工具,如數(shù)學(xué)計(jì)算:Math.sqrt()abstract:只有方法名,沒(méi)有方法體。要在子類中通過(guò)重新定義〔override〕來(lái)實(shí)現(xiàn)final:不能被子類所重新定義〔override〕38方法的聲明〔續(xù)〕返回類型:方法內(nèi)return語(yǔ)句返回值的類型、void〔無(wú)返回值〕參數(shù)列表:參數(shù)類型可為根本類型或引用類型throws:通告本方法中會(huì)產(chǎn)生的例外〔異常〕類型提醒調(diào)用者要對(duì)相應(yīng)的可能例外進(jìn)行處理。當(dāng)執(zhí)行此方法并發(fā)生了例外時(shí),程序會(huì)轉(zhuǎn)入調(diào)用者編制的例外處理程序段。39例外觸發(fā)例如40方法體在方法體中定義的變量稱為局部變量。生命周期:程序流執(zhí)行進(jìn)入方法體時(shí)創(chuàng)立,程序流退出方法時(shí)撤消。局部變量使用之前必須初始化。局部變量名假設(shè)與類的成員變量名相同,那么成員變量被隱藏。可用this顯示相應(yīng)的成員變量。41方法體〔續(xù)〕在方法體中可訪問(wèn)本類所有的類變量,并可調(diào)用本類中定義的非靜態(tài)方法。static方法只能直接調(diào)用本類的static方法和static變量。static方法無(wú)法引用非static的成員變量numstatic方法可以用類名直接調(diào)用42方法的參數(shù)方法的參數(shù)要“有名有型”參數(shù)的作用域在本方法中可像方法內(nèi)的局部變量一樣使用。方法調(diào)用中,根本類型參數(shù)是值傳送;引用類型參數(shù)是地址傳送。43值傳送與地址傳送引用類型地址傳送基本類型值傳送3.143.14AB0x2F0x2FCD方法定義:voidmethod1(intA)voidmethod2(StringC)方法調(diào)用:instance.method1(B)instance.method2(D)A,C是形參B,D是實(shí)參44構(gòu)造方法構(gòu)造方法與類同名,且不聲明返回類型。在創(chuàng)立每個(gè)新對(duì)象時(shí)自動(dòng)執(zhí)行以保證新對(duì)象的各成員都有合法、確定的初值。Java試圖在每個(gè)對(duì)象一誕生時(shí),就給它一個(gè)指定的狀態(tài)〔即成員變量的初值〕,但有時(shí)系統(tǒng)的缺省初值并不適宜;所以在創(chuàng)立一個(gè)新對(duì)象時(shí),需用構(gòu)造方法完成合法的初始化,使成員變量的初始化工作不依賴于外界〔系統(tǒng)〕完成。45構(gòu)造方法的特點(diǎn)構(gòu)造方法與成員方法不同,不能被直接調(diào)用。必須通過(guò)new調(diào)用;創(chuàng)立對(duì)象時(shí),利用運(yùn)算符new在內(nèi)存中開(kāi)辟專用空間,存放指定的類的實(shí)例〔即對(duì)象〕,這時(shí)會(huì)自動(dòng)執(zhí)行類的構(gòu)造方法,初始化新對(duì)象的成員變量.例:Dated=newDate(22,5,2003);46構(gòu)造方法的缺省每一個(gè)類至少有一個(gè)構(gòu)造方法?!部梢杂卸鄠€(gè),重載〕當(dāng)未定義任何構(gòu)造方法時(shí),系統(tǒng)在編譯時(shí),會(huì)提供一個(gè)缺省〔默認(rèn)〕構(gòu)造方法無(wú)參數(shù),方法體中沒(méi)有內(nèi)容缺省構(gòu)造方法的初始化數(shù)據(jù)初值:數(shù)值型:0;布爾型:false;引用型:null;

字符串型:null;一旦程序員定義了構(gòu)造方法,缺省〔默認(rèn)〕構(gòu)造方法自動(dòng)失效!47缺省構(gòu)造方法例如48自定義構(gòu)造方法例如1構(gòu)造方法與類同名且不聲明返回類型49自定義構(gòu)造方法例如2構(gòu)造方法與類同名且不聲明返回類型50以“this”

調(diào)用構(gòu)造方法this(參數(shù)列表)表示調(diào)用本類的構(gòu)造方法在一個(gè)構(gòu)造方法中,當(dāng)使用this并給它一個(gè)參數(shù)列表時(shí),this顯式調(diào)用參數(shù)匹配的另一個(gè)構(gòu)造方法。使用this調(diào)用本類的其他構(gòu)造方法時(shí),this應(yīng)是第一個(gè)可執(zhí)行語(yǔ)句51類的繼承:Extends關(guān)鍵字Java中用extends關(guān)鍵字定義子類。publicclassEmployee{

protectedStringname;

protectedintgrade;

protectedintsalary; …}子類是從已有的類創(chuàng)立新類的一種方法。publicclassManager

extendsEmployee{

intbonus; }要使得子類直接可以訪問(wèn)父類屬性,必須聲明父類屬性的訪問(wèn)符為protected(或public)52類的繼承創(chuàng)立類時(shí)指明它為某類的子類extends父類名子類將繼承protected和public的所有父類成員〔可直接訪問(wèn)〕private:不能被繼承缺省:除非子類和父類在同一個(gè)包,否那么也不能繼承Java是單繼承,不支持多繼承extends后的類名只能有一個(gè)可通過(guò)接口間接實(shí)現(xiàn)多繼承53類的繼承:擴(kuò)展子類對(duì)父類可做擴(kuò)展和特殊化。子類繼承父類的屬性、功能(方法)子類中只需聲明特有的東西。創(chuàng)立新的成員:屬性和方法重新定義父類中已有的屬性:父類屬性被隱藏重新定義父類中已有的方法:重寫(override)子類中的方法應(yīng)與父類中的被重寫的方法有完全相同的參數(shù)列表、返回值。54類的繼承例如重新定義屬性新添加屬性方法重寫被重寫方法的返回值、方法名、參數(shù)列表要與父類中的方法完全一樣55方法重寫規(guī)那么方法的訪問(wèn)權(quán)限不能縮小。高低訪問(wèn)權(quán)限56方法重寫規(guī)那么可擴(kuò)大訪問(wèn)權(quán)限57類的繼承:上溯造型子類對(duì)象可自動(dòng)轉(zhuǎn)換成父類對(duì)象,即,父類變量可以指向子類對(duì)象,稱為上溯造型〔upcast〕,系統(tǒng)自動(dòng)完成。58父類變量執(zhí)行子類方法父類變量指向子類對(duì)象,但如果要使用子類特有的方法,需要強(qiáng)制轉(zhuǎn)換為子類。59父類變量執(zhí)行子類重寫方法如果父類變量指向子類對(duì)象,執(zhí)行某個(gè)父類定義但被子類重寫的方法,實(shí)際執(zhí)行的代碼是子類的相應(yīng)方法。運(yùn)行時(shí)多態(tài):在運(yùn)行時(shí)根據(jù)對(duì)象的具體情況來(lái)決定調(diào)用的方法是父類的還是子類的。60回憶方法重載〔與重寫比照〕方法重載:同類中的同名方法參數(shù)必須不同形參的個(gè)數(shù)、類型、順序的不同返回值、修飾符可以相同,可以不同要打印不同類型的數(shù)據(jù),如int,float,String等(通過(guò)不同參數(shù)區(qū)分)voidprint(inti);voidprint(floatf);voidprint(Strings);編譯時(shí)多態(tài):由編譯器在編譯時(shí)根據(jù)參數(shù)的區(qū)別,來(lái)調(diào)用綁定方法體。61方法重寫vs方法重載區(qū)別點(diǎn)重載方法重寫方法參數(shù)列表必須修改不能修改返回類型可以修改不能修改異常可以修改不能拋出新的異常訪問(wèn)可以修改不能縮小訪問(wèn)權(quán)限多態(tài)編譯時(shí)運(yùn)行時(shí)

62注意1:屬性無(wú)運(yùn)行時(shí)多態(tài)!子類重新定義父類屬性后,父類屬性被隱藏,子類對(duì)象無(wú)法直接訪問(wèn)父類屬性。如果把子類對(duì)象賦值給父類變量〔上溯造型〕,再訪問(wèn)該屬性,那么將訪問(wèn)到父類屬性。63注意2:static、final、private方法無(wú)運(yùn)行時(shí)多態(tài)!靜態(tài)聯(lián)編〔早聯(lián)編〕:StaticBinding(EarlyBinding)Java對(duì)static、final、private方法的調(diào)用,是在運(yùn)行前將方法調(diào)用和方法體連接到一起不存在運(yùn)行時(shí)多態(tài)動(dòng)態(tài)聯(lián)編〔晚聯(lián)編〕:DynamicBinding(LateBinding)對(duì)非static、final、private方法的調(diào)用,是在運(yùn)行時(shí)才將方法調(diào)用和方法體連接到一起實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)的機(jī)理64上溯造型總結(jié)上溯造型中:同名方法,假設(shè)子類重寫,那么調(diào)用子類自己的,是運(yùn)行時(shí)多態(tài):利用動(dòng)態(tài)聯(lián)編實(shí)現(xiàn)。注意:static、final、private方法,利用靜態(tài)聯(lián)編實(shí)現(xiàn),故不存在運(yùn)行時(shí)多態(tài)。同名屬性是調(diào)用父類的。一個(gè)引用類型變量如果聲明為父類的類型,但實(shí)際引用的是子類對(duì)象,那么該變量不能再訪問(wèn)子類中添加的子類獨(dú)有的屬性和方法。65課堂練習(xí));5sub66課堂練習(xí)1判斷以下哪些語(yǔ)句是合法的:b.f();a.j=5;a.g();b.i=3;67課堂練習(xí)2執(zhí)行結(jié)果?68課堂練習(xí)4執(zhí)行結(jié)果?69final關(guān)鍵字被定義成final的類不能有子類。final變量不在聲明時(shí)初始化會(huì)報(bào)錯(cuò)final變量不能改變被定義成final的成員方法不能被重寫。被定義成final的成員變量不能改變。該變量實(shí)際上是常量,一般大寫,并必須在聲明時(shí)初始化。finalintNUMBER=100;70static關(guān)鍵詞在一些編程場(chǎng)景中,某些成員應(yīng)該屬于一個(gè)類,即被所有該類的對(duì)象共享。例:一個(gè)類希望通過(guò)一個(gè)成員屬性記錄程序中共生成多少個(gè)它的對(duì)象關(guān)鍵詞static可用于定義類成員〔類屬性、類方法〕,也叫做靜態(tài)成員〔靜態(tài)屬性、靜態(tài)方法〕不用static修飾的成員被稱為實(shí)例成員〔實(shí)例屬性、實(shí)例方法〕類屬性和類方法可直接通過(guò)類名訪問(wèn)雖然也可以通過(guò)該類的對(duì)象訪問(wèn),但屬于不良的編程習(xí)慣,不推薦。實(shí)例屬性和實(shí)例方法必須通過(guò)該類的對(duì)象才可訪問(wèn)71static方法使用注意點(diǎn)static方法中不能直接訪問(wèn)本類的實(shí)例屬性,只能訪問(wèn)static屬性、方法參數(shù)及局部變量static方法中不能直接訪問(wèn)本類的實(shí)例方法,只能訪問(wèn)本類的static方法如果要訪問(wèn)實(shí)例屬性或?qū)嵗椒?,可在static方法中先創(chuàng)立本類的對(duì)象,再使用該對(duì)象的實(shí)例屬性或?qū)嵗椒╯tatic方法中不能訪問(wèn)this引用72抽象類抽象方法:只聲明方法而沒(méi)有方法的實(shí)現(xiàn)〔方法體〕在方法聲明中,在緊接著類訪問(wèn)限定詞之后增加關(guān)鍵字abstract。抽象類:在類聲明中,在緊接著類訪問(wèn)限定詞之后增加關(guān)鍵字abstract。在無(wú)方法體的方法〔抽象方法〕前也要加上abstract。publicabstractclassDrawing{//抽象類 publicabstract

voiddrawDot(intx,inty);//抽象方法 publicvoiddrawLine(intx1,inty1,intx2,inty2) {…//非抽象方法}}一個(gè)abstract類可以包含有非抽象方法和變量,但至少包含一個(gè)抽象方法。73抽象類抽象類不能直接用來(lái)生成實(shí)例。一般通過(guò)定義子類進(jìn)行實(shí)例化可以聲明抽象類的變量該變量可指向一個(gè)子類的實(shí)例。abstractclassEmployee{

abstractvoidraiseSalary(inti); }classManagerextendsEmployee{//抽象類的子類 voidraiseSalary(inti){….}//實(shí)現(xiàn)抽象方法 }Employeee=newManager();//指向子類實(shí)例74接口(Interface/Protocol)可看作“特殊的抽象類”一個(gè)接口定義了一組對(duì)外的公共接口〔一系列操作的組合〕只包含操作簽名Signature〔即操作名、參數(shù)類型、返回值類型〕不包含操作的具體實(shí)現(xiàn)75接口(Interface/Protocol)接口的方法需要類進(jìn)行實(shí)現(xiàn)〔implements〕76Java中的接口〔Interface〕1)Java允許定義publicstaticfinal的常量〔修飾符只能寫public,static,或final,但無(wú)論怎么寫,都不會(huì)影響該變量是publicstaticfinal〕2)interface的方法,默認(rèn)為publicabstract〔類在實(shí)現(xiàn)接口時(shí),必須將實(shí)現(xiàn)的接口方法聲明為public〕A,B,C,D都是TInterface的publicstaticfinal變量思考:怎樣寫程序驗(yàn)證A,B,C,D都是publicstaticfinal?其他類實(shí)現(xiàn)接口的method方法時(shí)必須聲明public,否則報(bào)錯(cuò)77一個(gè)類可實(shí)現(xiàn)多個(gè)接口類可以實(shí)現(xiàn)〔implements〕多個(gè)接口如果多個(gè)接口中定義了同樣的抽象方法,在實(shí)現(xiàn)的類中實(shí)現(xiàn)一次即可。78接口之間的繼承接口可以繼承〔extends〕接口假設(shè)接口B繼承接口A類C實(shí)現(xiàn)接口B,那么需實(shí)現(xiàn)接口A和B中定義的所有抽象方法。79子接口可繼承多個(gè)父接口注意:一個(gè)子接口可以繼承〔extends〕多個(gè)父接口接口C繼承接口A和B類D實(shí)現(xiàn)接口C,那么需要實(shí)現(xiàn)A,B和C中所有的抽象方法80

interface要注意的問(wèn)題盡量不向interface定義中隨意增加方法。直接在接口中增加方法,會(huì)帶來(lái)所有實(shí)現(xiàn)該接口的類的維護(hù)問(wèn)題。推薦:定義新接口,繼承原接口來(lái)增加方法publicinterfaceshape{voiddraw();voiderase();

doublearea();//直接在接口中增加方法,會(huì)帶來(lái)所有該接口的子類的維護(hù)問(wèn)題}publicinterfaceShapeWithAreaextends

Shape{//通過(guò)子接口來(lái)新增方法

doublearea();}81interface:多態(tài)性可聲明interface的變量,指向具體實(shí)現(xiàn)該interface的類的實(shí)例,并實(shí)現(xiàn)多態(tài)性。82接口實(shí)現(xiàn)配合類繼承:多繼承這是示意圖,考試不必畫,這里用來(lái)幫助大家理解的。83Java中接口與抽象類的比較接口中的所有方法都是抽象的,而抽象類可以定義有方法體的不同方法。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但是只能繼承一個(gè)父類。繼承父類和實(shí)現(xiàn)接口相組合,可實(shí)現(xiàn)多繼承。84上機(jī)練習(xí)創(chuàng)立一個(gè)接口,接口名Function,具有一個(gè)方法evaluate,參數(shù)為一個(gè)int型變量,返回值為int。創(chuàng)立一個(gè)類,類名Half,實(shí)現(xiàn)Function接口的evaluate方法:將傳入的參數(shù)除以2返回。創(chuàng)立一個(gè)類,類名TwoTimes,實(shí)現(xiàn)Function接口的evaluate方法:將傳入的參數(shù)乘以2返回。再新建一個(gè)類,在類中實(shí)現(xiàn)一個(gè)方法,該方法的參數(shù)列表為一個(gè)int型數(shù)組和一個(gè)Function類型對(duì)象,功能為利用Function對(duì)象的evaluate操作對(duì)數(shù)組的每個(gè)元素進(jìn)行改變,最后返回改變后的int型數(shù)組。利用上述方法,以及Half和TwoTimes類,對(duì)一個(gè)數(shù)組的所有元素進(jìn)行除以2或者乘以2的操作。85主要考核知識(shí)點(diǎn)第四局部Java類庫(kù)-異常86異常分類Error很難恢復(fù)的嚴(yán)重錯(cuò)誤。一般屬于系統(tǒng)內(nèi)部錯(cuò)誤,不由程序處理。發(fā)生時(shí),由用戶按照系統(tǒng)提示關(guān)閉程序。Exception由程序本身或環(huán)境產(chǎn)生的錯(cuò)誤,可通過(guò)異常處理來(lái)進(jìn)行有效控制。RuntimeException:程序設(shè)計(jì)或?qū)崿F(xiàn)上的問(wèn)題,如數(shù)組越界等。其他Exception:通常是由環(huán)境因素引起的,并且可以被處理的。如文件不存在,無(wú)效URL等。87常用方法:StringgetMessage():返回詳細(xì)信息StringtoString():返回包括異常類名以及getMessage()信息的描述voidprintStackTrace():打印出異常發(fā)生的路徑〔精確到第幾行〕 即,引起異常的方法調(diào)用的序列。這些均繼承自Throwable類Exception類的常用方法88異常處理良好的程序應(yīng)預(yù)見(jiàn)并處理可能發(fā)生的各種異常Java中的異常處理方法:捕獲并處理異常〔由發(fā)生異常的方法自行處理〕將方法中產(chǎn)生的異常拋出〔在其他程序調(diào)用該方法時(shí)進(jìn)行處理〕89異常處理:捕獲與處理異常try

語(yǔ)句塊catch語(yǔ)句塊finally語(yǔ)句塊try語(yǔ)句后必須跟隨至少一個(gè)catch或者finally語(yǔ)句塊90try/catch/finally一般形式try語(yǔ)句塊:包含可能產(chǎn)生異常的java語(yǔ)句catch語(yǔ)句塊:提供發(fā)生異常時(shí)的處理方法finally語(yǔ)句塊:無(wú)論是否發(fā)生異常,均會(huì)執(zhí)行try{

javastatements;}catch(SomeThrowableClassvariableName){

javastatements;}一條或多條可能產(chǎn)生異常的java語(yǔ)句能夠被處理的異常類名,必須是Throwable的子類被捕獲異常的變量名稱,可作為局部變量使用當(dāng)捕獲到異常時(shí)執(zhí)行的java語(yǔ)句finally{

javastatements;}91catch處理多個(gè)異常可寫多個(gè)catch語(yǔ)句塊捕獲不同種類的異常當(dāng)拋出一個(gè)異常時(shí),依次匹配各個(gè)catch語(yǔ)句內(nèi)捕獲的異常類型,執(zhí)行第一個(gè)類型匹配的catch語(yǔ)句,其他catch語(yǔ)句不再執(zhí)行。匹配規(guī)那么:拋出對(duì)象與catch參數(shù)的類型相同或是參數(shù)類的子類處理算術(shù)異常(如除0)處理數(shù)組越界異常92catch處理多個(gè)異常例如除0數(shù)組訪問(wèn)越界93finally語(yǔ)句塊無(wú)論是否發(fā)生異常都要執(zhí)行finally語(yǔ)句塊執(zhí)行完后,繼續(xù)執(zhí)行程序的后續(xù)代碼。94異常處理:拋出異常在方法聲明中說(shuō)明可能產(chǎn)生的異常,但該方法本身將不處理該異常,而將它拋到調(diào)用該方法的程序中去。classA{publicstaticvoidtroublesome()throwsSomeException{ …..}}拋出異常ClassB{

…try{A.troublesome();…}catch(SomeExceptione){…}調(diào)用拋出異常的方法時(shí),用try/catch捕獲95方法聲明中throws后的Exception類可配合方法體內(nèi)throw語(yǔ)句拋出異常類對(duì)象。throw語(yǔ)句拋出異常類對(duì)象聲明方法可能拋出的異常使用throw語(yǔ)句拋出異常對(duì)象:一旦拋出異常對(duì)象,該方法內(nèi)后續(xù)代碼不再執(zhí)行!96throw語(yǔ)句拋出異常類對(duì)象聲明方法可能拋出的異常使用throw語(yǔ)句拋出異常:一旦拋出異常,該方法內(nèi)后續(xù)代碼不再執(zhí)行97自定義異常繼承Throwable或者它的子類〔如Exception〕自定義異常98自定義異常完整的異常類類名99課堂練習(xí)1程序輸出?100課堂練習(xí)2101課堂練習(xí)3102主要考核知識(shí)點(diǎn)第四局部Java類庫(kù)-線程103進(jìn)程VS線程當(dāng)程序進(jìn)入到內(nèi)存運(yùn)行時(shí),即變成了一個(gè)進(jìn)程。處于運(yùn)行過(guò)程中的程序。具有一定的獨(dú)立功能系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。具有獨(dú)立性、動(dòng)態(tài)性和并發(fā)性。線程可使得同一個(gè)進(jìn)程可以同時(shí)并發(fā)處理多個(gè)任務(wù)。也被稱為輕量級(jí)進(jìn)程是進(jìn)程的執(zhí)行單元,是進(jìn)程的組成局部。一個(gè)進(jìn)程可以擁有多個(gè)線程, 一個(gè)線程必須擁有一個(gè)父進(jìn)程。104進(jìn)程VS線程一個(gè)程序運(yùn)行后至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程可以包含多個(gè)線程,但至少有一個(gè)線程。操作系統(tǒng)可以同時(shí)執(zhí)行多個(gè)任務(wù),每個(gè)任務(wù)就是進(jìn)程;進(jìn)程可以同時(shí)執(zhí)行多個(gè)任務(wù),每個(gè)任務(wù)就是線程。105線程的創(chuàng)立兩種方式,均需要編寫run()方法實(shí)現(xiàn)Runnable接口繼承Thread類推薦使用Runnable接口的方式,便于繼承其他類。實(shí)現(xiàn)Runnable接口繼承Thread類start方法啟動(dòng)線程106主要考核知識(shí)點(diǎn)第四局部4.4Java類庫(kù)-輸入輸出107緩存流BufferedInputStream/BufferedOutputStream;BufferedReader/BufferedWriter數(shù)據(jù)從原始流成塊讀入或?qū)?shù)據(jù)積累到一個(gè)大數(shù)據(jù)塊后再成批輸出減少讀寫次數(shù),提高程序執(zhí)行效率過(guò)濾流,需在構(gòu)造方法時(shí)給出前端流〔輸入〕或后端流〔輸出〕publicBufferedInputStream(InputStreamin)publicBufferedOutputStream(OutputStreamout)108緩存流例如:按行讀取文件BufferedReader增加readLine()方法,讀一行字符返回〔文件尾返回null〕BufferedReader常和FileReader構(gòu)成輸入流套接用于讀取文本文件。109緩存流例如:按行讀取文件110標(biāo)準(zhǔn)文件類:FileFile類對(duì)象對(duì)應(yīng)于文件系統(tǒng)中的一個(gè)目錄或者文件可獲取文件的信息:路徑、名字、長(zhǎng)度、可否讀寫等可管理文件:創(chuàng)立、刪除、更名等不可對(duì)文件數(shù)據(jù)讀寫〔由文件流實(shí)現(xiàn)〕File對(duì)象的創(chuàng)立publicFile(Stringpathname):可使用絕對(duì)路徑或相對(duì)路徑Filef1=newFile(“c:/work/myfile.txt”);Filef2=newFile(“mydir/dir1”);publicFile(Stringparent,Stringchild):parent-父目錄,child-文件名或目錄名Filemydir=newFile(“d:/fatherDir”,“sonDir”)//指向d:/fatherDir/SonDirpublicFile(Fileparent,Stringchild):用File類對(duì)象來(lái)表示父目錄111File類創(chuàng)立文件或目錄第一次運(yùn)行第二次運(yùn)行文件和目錄已經(jīng)存在,故創(chuàng)立失敗112上機(jī)練習(xí)1.修改擲骰子程序,將用戶玩游戲的結(jié)果存入文件內(nèi),并提供一個(gè)方法讓用戶查看自己的歷史游戲勝率。FileWriter的構(gòu)造使用FileWriter(Stringfilename,booleanappend),設(shè)定append為true,從而向原文件的尾部繼續(xù)添加內(nèi)容。113主要考核知識(shí)點(diǎn)第四局部4.5Java類庫(kù)-GUI114BorderLayout邊界布局管理器將容器分成五個(gè)區(qū)域BorderLayout.NORTHBorderLayout.SOUTHBorderLayout.CENTERBorderLayout.EASTBorderLayout.WEST每個(gè)區(qū)域只能放置一個(gè)組件當(dāng)用戶改變?nèi)萜鞔翱诘拇笮r(shí),各個(gè)組件的相對(duì)位置不變,而組件的大小改變BorderLayout是JFrame的默認(rèn)布局管理器115GUI的事件處理GUI中事件處理的一般過(guò)程:當(dāng)用戶在界面上利用鼠標(biāo)或鍵盤進(jìn)行操作時(shí)監(jiān)測(cè)GUI的操作系統(tǒng)將發(fā)生的事件傳遞給GUI應(yīng)用程序應(yīng)用程序根據(jù)事件的類型做出相應(yīng)的反響。事件處理模型中的3類對(duì)象事件(event):操作產(chǎn)生事件〔按下鍵盤、拖動(dòng)或單擊鼠標(biāo)等〕事件源(eventsource):產(chǎn)生事件的組件〔如按鈕JButton〕事件處理器(eventhandler):接受事件對(duì)象,進(jìn)行解釋,并做出相應(yīng)處理。116委托方式的事件處理當(dāng)界面操作事件產(chǎn)生并發(fā)送到產(chǎn)生事件的組件時(shí),該組件將把事件發(fā)送給能接收

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論