Java語言程序設(shè)計(jì)課件_第1頁(yè)
Java語言程序設(shè)計(jì)課件_第2頁(yè)
Java語言程序設(shè)計(jì)課件_第3頁(yè)
Java語言程序設(shè)計(jì)課件_第4頁(yè)
Java語言程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩96頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1Java語言程序設(shè)計(jì)—緒論

2緒論什么是JavaJava的起源與發(fā)展Java語法機(jī)制JVMJava程序開發(fā)3什么是JavaJava是一種編程語言一種開發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境句法與C++相似,語義與SmallTalk相似用來開發(fā)applets和applications當(dāng)今最流行的應(yīng)用程序與網(wǎng)絡(luò)開發(fā)語言之一4Java的起源與發(fā)展Java的發(fā)展歷史1991年Green小組創(chuàng)建,面向家電市場(chǎng)以C/C++為基礎(chǔ),創(chuàng)建Oak1995年將Oak應(yīng)用于WWW上,更名為JavaHotJava—支持Java的WWW瀏覽器;Java與HotJava均采用免費(fèi)策略1996年,JDK1.01998年,Java2平臺(tái)5Java技術(shù)體系J2SE:Java2PlatformStandardEditionJ2EE:Java2PlatformEnterpriseEditionJ2ME:Java2PlatformMicroEditionP6J2SE組成JSP簡(jiǎn)介(J2EE)6Java運(yùn)行原理Test.javaCompilerTest.classInterpreter1JVM(Win32)1001010…Interpreter2JVM(Solaris)Interpreter3JVM(MacOS)1001010…1001010…7Java的特征簡(jiǎn)單性面向?qū)ο蠓植际桨刖幾g、半解釋健壯性安全性體系結(jié)構(gòu)中立可移植性高性能多線程動(dòng)態(tài)特性8Java語法機(jī)制區(qū)別于C++語法機(jī)制類不允許一個(gè)類同時(shí)繼承多個(gè)父類引進(jìn)abstract和final修飾詞接口程序包多線程取消指針9JVMHello.javaJavacHello.javaHello.classJVMClassLoaderByteCodeVerifierInterpreterJITCodeGeneratorRuntime本地系統(tǒng)CompileRuntimeInternet

加載代碼驗(yàn)證代碼執(zhí)行代碼10Java程序開發(fā)JavaAPIjava.langjava.iojava.utiljava.awtjava.awt.eventjava.appletjava.sql11Java程序的編寫與編譯一個(gè)基本的Java應(yīng)用程序Chap01.java:打印HelloWorld!javacchap01.javajavachap0112編譯常見錯(cuò)誤javac:CommandnotfoundHelloWorldApp.java:6:Methodprintl(java.lang.String)notfoundinclassjava.io.PrintStream.System. out.printl("HelloWorld!");InclassHelloWorldApp:mainmustbepublicorstaticcan’tfindclassHelloWorldApp類計(jì)數(shù)13Java語言基礎(chǔ)標(biāo)識(shí)符與數(shù)據(jù)類型表達(dá)式與語句程序控制語句數(shù)組14標(biāo)識(shí)符與數(shù)據(jù)類型注釋分號(hào)、塊和空白標(biāo)識(shí)符基本java類型15注釋三種允許的Java技術(shù)程序注釋風(fēng)格//commentononeline/*commentonone ormoreline*//**documentingcomment*/16分號(hào)、塊和空白一個(gè)語句是一行用分號(hào)(;)終止的代碼totals=a+b+c+d+e+f;一個(gè)塊是以上括號(hào)和下括號(hào)為邊界的語句集合

{ x=y+1; y=x+1; }一個(gè)塊可被用在一個(gè)類的定義中

publicclassDate{intday; intmonth;intyear;}塊語句可被嵌套Java程序中允許任意多的空白17區(qū)塊的形式//ablockstatement{x=y+1;y=x+1;}//ablockusedinaclassdefinitionpublicclassMyDate{intday;intmonth;intyear;}//anexampleofablockstatementnestedwithin//anotherblockstatementwhile(i<large){a=a+i;if(a==max){b=b+a;//nestedblockisherea=0;}}18空白在源代碼元素之間允許空白,空白的數(shù)量不限??瞻?包括空格、tabs和新行)可以改善你的對(duì)源代碼的視覺感受。{intx;x=23*54;}

intx;x=23+54;}19標(biāo)識(shí)符是賦予變量、類和方法的名稱可從一個(gè)字母、下劃線(_)或美元符號(hào)($)開始是大小寫區(qū)別對(duì)待的,且無最大長(zhǎng)度[舉例]identifieruserNameUser_name_sys_varl$change20Java關(guān)鍵字abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis21關(guān)鍵字—幾點(diǎn)注意true、false和null為小寫無sizeof運(yùn)算符goto和const不是Java編程語言中使用的關(guān)鍵字22基本Java類型Java編程語言定義了八個(gè)原始類型邏輯類boolean文本類char整數(shù)類byte,short,int,long浮點(diǎn)類double,float23文本類──char和Stringchar代表一個(gè)16-bitUnicode字符必須包含用單引號(hào)(’’)引用的文字使用下列符號(hào):‘a(chǎn)’‘\t’一個(gè)制表符‘\u????’一個(gè)特殊的Unicode字符,????應(yīng)嚴(yán)格使用四個(gè)16進(jìn)制數(shù)進(jìn)行替換[舉例]Chap02_1.javaString(StringBuffer:可對(duì)字符串的值進(jìn)行修改)不是一個(gè)原始數(shù)據(jù)類型,它是一個(gè)類具有用雙引號(hào)引用的文字可按如下情形使用:Stringgreeting=“GoodMorning!!\n”;Stringerr_meg=“recordnotfound!”;24整數(shù)類──byte,short,int,long采用三種進(jìn)制─十進(jìn)制、八進(jìn)制和16進(jìn)制具有缺省int用字母“L”和“l(fā)”定義long25浮點(diǎn)─float和double缺省為double浮點(diǎn)文字包括小數(shù)點(diǎn)或下列各項(xiàng)之一E或e(增加指數(shù)值)F或f(float)D或d(double)舉例:3.14一個(gè)簡(jiǎn)單的浮點(diǎn)值(adouble)4.02E23一個(gè)大浮點(diǎn)值2.718F一個(gè)簡(jiǎn)單的float長(zhǎng)度值123.4E+306D一個(gè)大的帶冗余D的double值P42

例3-326表達(dá)式與語句變量、聲明和賦值Java編碼約定理解對(duì)象運(yùn)算符表達(dá)式變量及作用域27變量、聲明和賦值1.publicclassAssign{2.publicstaticvoidmain(Stringargs[]){3.intx,y;//declareintvariables4.floatz=3.414f;//declareandassignfloat5.doublew=3.1415;//declareandassigndouble6.booleantruth=true;//declareandassignboolean7.charc;//declarecharactervariable8.Stringstr;//declareString9.Stringstr1="bye";//declareandassign//Stringvariable10.c='A';//assignvaluetocharvariable11.str="Hioutthere!";//assignvaluetoStringvariable12.x=6;13.y=1000;//assignvaluestointvariables14....15.}16.}28非法賦值舉例y=3.1415926;//3.1415926isnotanint.//Requirescastinganddecimalwill//betruncated.w=175,000;//thecommasymbol(,)cannotappeartruth=1;//acommonmistakemadebyex-C/C++programmers.29Java編碼約定-1classes─類名應(yīng)該是名詞,大小寫可混用,但首字母應(yīng)大寫classAccountBookclassComplexVariableinterface──界面名大小寫規(guī)則與類名相同interfaceAccountmethod──方法名應(yīng)該是動(dòng)詞,大小寫可混用,但首字母應(yīng)小寫。在每個(gè)方法名內(nèi),大寫字母將詞分隔并限制使用下劃線。balanceAccount()addComplex()Variables──所有變量都可大小寫混用,但首字符應(yīng)小寫。詞由大寫字母分隔,限制用下劃線,限制使用美元符號(hào)($),因?yàn)檫@個(gè)字符對(duì)內(nèi)部類有特殊的含義。currentCustomer變量應(yīng)該代表一定的含義,通過它可傳達(dá)給讀者使用它的意圖。盡量避免使用單個(gè)字符,除非是臨時(shí)“即用即扔”的變量(例如,用i,j,k作為循環(huán)控制變量)30Java編碼約定-2spacing──每行只寫一個(gè)語句并使用四個(gè)縮進(jìn)的空格使你的代碼更易讀。comments──用注釋來說明那些不明顯的代碼段落;對(duì)一般注釋使用//分隔符,而大段的代碼可使用/*???*/分隔符。使用/**???*/將注釋形成文檔,并輸入給javadoc以生成HTML代碼文檔舉例://Acommentthattakesuponlyoneline./*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines...*//**Acommentfordocumentationpurposes.31理解對(duì)象回顧對(duì)象的歷史創(chuàng)建一個(gè)新類型創(chuàng)建一個(gè)對(duì)象—存儲(chǔ)器分配或布局32表達(dá)式變量和作用域變量初始化運(yùn)算符邏輯表達(dá)式位運(yùn)算布爾邏輯運(yùn)算符用加號(hào)(+)進(jìn)行串鏈接右移位運(yùn)算符左移位運(yùn)算符類型轉(zhuǎn)換升級(jí)和表達(dá)式的類型轉(zhuǎn)換33變量及作用域局部變量方法或塊內(nèi)有效類成員變量static:類內(nèi)有效非static:對(duì)象內(nèi)有效方法參數(shù)方法內(nèi)有效異常處理參數(shù)catch語句后{}內(nèi)有效P48

圖3-6、例3-434運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符P50

算術(shù)運(yùn)算符優(yōu)先級(jí)與自動(dòng)轉(zhuǎn)換規(guī)則23:java.lang.Math.pow(2,3);關(guān)系運(yùn)算符邏輯運(yùn)算符P53

邏輯運(yùn)算符表位操作符賦值操作符35位操作符位邏輯運(yùn)算符按位與&按位或|按位異或^按位取反~位移位運(yùn)算符P55[注意]右移運(yùn)算符>>左移運(yùn)算符<<無符號(hào)右移運(yùn)算符>>>36賦值操作符擴(kuò)展賦值運(yùn)算符:P56

表3-16自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換其它運(yùn)算符?:[].()Newinstanceof運(yùn)算符的優(yōu)先級(jí):P57

表3-1837強(qiáng)制類型轉(zhuǎn)換語法(type)expression舉例longbigValue=99L; intintValue=(int)bigValue;[注意]原始類型和數(shù)組、對(duì)象等引用類型變量間不能相互轉(zhuǎn)換38程序控制語句循環(huán)語句分支語句跳轉(zhuǎn)語句異常處理語句39循環(huán)語句whiledo…while[舉例]Chap02_2.javafor[舉例]P61

例3-840java中的數(shù)據(jù)類型轉(zhuǎn)換-1如何將字串String轉(zhuǎn)換成整數(shù)intinti=Integer.parseInt(<String>);

或i=Integer.parseInt(<String>,<index>);inti=Integer.valueOf(my_str).intValue();字符串轉(zhuǎn)成Double,Float,Long的方法大同小異41java中的數(shù)據(jù)類型轉(zhuǎn)換-2如何將整數(shù)int轉(zhuǎn)換成字串StringStrings=String.valueOf(i);Strings=Integer.toString(i);Strings=""+i;Double,Float,Long轉(zhuǎn)成字符串的方法大同小異[舉例]Chap03_1.java42java中的數(shù)據(jù)類型轉(zhuǎn)換-3string->byte BytestaticbyteparseByte(Strings)

byte->string BytestaticStringtoString(byteb)char->string CharacterstaticStringtoString(charc)string->Short ShortstaticShortparseShort(Strings)Short->String ShortstaticStringtoString(Shorts)String->Integer IntegerstaticintparseInt(Strings)Integer->String IntegerstaticStringtostring(inti)String->Long LongstaticlongparseLong(Strings)Long->String LongstaticStringtoString(Longi)String->Float FloatstaticfloatparseFloat(Strings)Float->String FloatstaticStringtoString(floatf)String->Double DoublestaticdoubleparseDouble(Strings)Double->String DoublestaticStringtoString(Double)43Java面向?qū)ο筇匦愿攀鲱惖亩x對(duì)象的生命周期類的繼承與多態(tài)44概述Java語言的OOP特性封裝繼承多態(tài)類和對(duì)象的基本概念例4-145類的定義類的基本結(jié)構(gòu)類的聲明:<modifiers>class<class_name>類體P81圖4-1 [<attributedeclare>] [<constructordeclare>] [<methodsdeclare>]類的封裝與信息隱藏P82例4-2成員變量基本四態(tài):public、protected、private、—成員方法方法聲明:P83[舉例]P84例4-3方法調(diào)用中的參數(shù)傳遞:傳值(包括地址)P85例4-446方法重載Overloading——允許在一個(gè)類的定義中,多個(gè)方法使用相同的方法名(多態(tài):編譯時(shí)多態(tài))舉例publicvoidprintln() publicvoidprintln(inti) publicvoidprintln(floatf) publicvoidprintln(Stringstr) publicvoidprintln(Objectx)P88

例4-547構(gòu)造方法-1基本格式[public|protected|private]<classname>([<argumentlist>]){ [<statements>] }特點(diǎn)構(gòu)造方法的名稱必須和類名相同構(gòu)造方法不能有返回值用戶不能直接調(diào)用構(gòu)造方法,必須通過關(guān)鍵詞new自動(dòng)調(diào)用[舉例]P90

例4-7類成員變量的賦值:初始化->顯式->構(gòu)造48構(gòu)造方法-2缺省的構(gòu)造方法沒有參數(shù)系統(tǒng)自動(dòng)添加初始化對(duì)象重載構(gòu)造方法一般加上缺省情況[舉例]P91

例4-849對(duì)象的生命周期對(duì)象的創(chuàng)建P94

圖4-4new分配內(nèi)存空間顯式初始化構(gòu)造方法初始化對(duì)象的使用對(duì)象的清除對(duì)象的引用與多個(gè)引用空間finalize();gc();50類的繼承與多態(tài)-1子類定義ClassSubClassextendsSuperClass{…}分析電子商務(wù)售書網(wǎng)站(不同類書、其它類)特性子類繼承父類所有屬性和方法,除了private修飾的屬性和方法構(gòu)造方法只要聲明自己特有的屬性和方法51類的繼承與多態(tài)-2單繼承extends

后面實(shí)現(xiàn)一個(gè)類名P97

圖4-5多重繼承只能靠接口實(shí)現(xiàn)this與super關(guān)鍵詞P98

例4-9this() //調(diào)用本類的構(gòu)造方法this.someMethod() //調(diào)用本類的方法/屬性super() //調(diào)用父類的構(gòu)造方法super.someMethod() //調(diào)用父類的方法/屬性[討論]

去掉super和thisChap03_2.java52子類對(duì)象的創(chuàng)建與實(shí)例化子類對(duì)象的創(chuàng)建與初始化分配對(duì)象所需要的全部?jī)?nèi)存空間,并初始化按繼承關(guān)系,自頂向下顯式初始化按繼承關(guān)系,自頂向下調(diào)用構(gòu)造方法幾點(diǎn)注意先從各級(jí)父類繼承部分完全初始化顯式初始化構(gòu)造初始化調(diào)用父類構(gòu)造方法(super或默認(rèn))[案例分析]P99

例4-1053方法的重寫(overriding)為什么要方法重寫?隱藏父類成員變量或成員方法怎么實(shí)現(xiàn)方法重寫?子類中重寫方法的返回值類型必須與父類中被重寫方法的返回值類型相同子類中重寫方法的方法名和參數(shù)列表必須與父類中被重寫方法的方法名和參數(shù)列表相同子類中重寫方法的訪問權(quán)限不能縮小子類中重寫方法不能拋出新的異常方法重寫舉例P101例4-1154運(yùn)行時(shí)多態(tài)多態(tài)的本質(zhì)對(duì)外一個(gè)接口,內(nèi)部多種實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)(晚聯(lián)編)P104

與編譯時(shí)多態(tài)上溯造型(upcasting)子類對(duì)象引用轉(zhuǎn)成父類對(duì)象引用從extends到超集(子類是父類的超集)可以創(chuàng)建不同類型對(duì)象的數(shù)組下溯造型(downcasting)父類對(duì)象引用轉(zhuǎn)成子類對(duì)象引用強(qiáng)制類型轉(zhuǎn)換55Java高級(jí)特性static關(guān)鍵詞final關(guān)鍵詞抽象類接口包訪問控制內(nèi)部類其它類56static關(guān)鍵詞static含義:靜態(tài)的、作用域:所屬類類變量/靜態(tài)變量所屬類的所有實(shí)例變量中都可以訪問private類方法/靜態(tài)方法57靜態(tài)初始化程序語法static{

… }[舉例]P118

例5-358final關(guān)鍵詞作用范圍類的聲明:不能再派生子類成員方法:不能被重寫成員變量:常量[舉例]P119

例5-459抽象類概念包含一個(gè)或多個(gè)抽象方法只有聲明,沒有方法體稱為抽象方法特點(diǎn)abstract修飾除了沒有方法體,其它和class一樣不能創(chuàng)建抽象類實(shí)例抽象類的子類可以創(chuàng)建實(shí)例(非抽象方法)抽象類的含義P121

圖5-160關(guān)于樹狀結(jié)構(gòu)不足之處的例子接口的引出-161卡車、輪船、噴氣機(jī)這些子類都以汽油為動(dòng)力燃料所以具有一些相同的屬性和方法,如每公里耗油量、剩余油量、加油操作、獲取剩余油量等為使程序簡(jiǎn)潔,可把這些公共屬性和方法放在父類交通工具中,然后由子類、子類的子類繼承但必將產(chǎn)生一個(gè)問題:自行車等非燃油交通工具子類也繼承了這些屬性和方法,這很不合理另外,子類層次越下,繼承的無效的方法越多,難以管理和掌握接口的引出-262解決方法把用于完成特定功能的若干屬性和方法組織成相對(duì)獨(dú)立的集合,凡是需要實(shí)現(xiàn)這種特定功能的類,都可以繼承該集合,并在類內(nèi)使用它。上述集合就是接口。在上面的例子中,可以定義一個(gè)用來完成燃油功能的接口“可燃油的”包含相關(guān)屬性功能,卡車、輪船、噴氣機(jī)這些類均可以通過實(shí)現(xiàn)該接口來?yè)碛腥加凸δ?。接口的引?363接口的引出-464接口概念聲明方法,不定義方法體一組對(duì)外的公共接口語法[public]interfaceInterfaceName[extendsListOfSuperInterface]{ typeNAME=value; returnTypemethodName([paramlist]);

}接口的實(shí)現(xiàn)implementsInterfaceName可以使用接口中定義的常量必須實(shí)現(xiàn)接口定義的所有方法實(shí)現(xiàn)多態(tài):P124

圖5-2例5-565多重繼承[舉例]P127

圖5-4擴(kuò)展接口創(chuàng)建子接口:extendsInterfaceName接口與抽象類接口與抽象類的所有方法都是抽象的,但抽象類有空方法體一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,而只能繼承一個(gè)抽象父類接口不構(gòu)成類的繼承體系,因此條件比較寬松;抽象類一般位于類的頂層一般使用接口;需要成員變量和完整方法定義時(shí),使用抽象類66包(package)OOP的封裝思想:將相關(guān)功能的接口和類放到同一目錄中,同時(shí)避免命名沖突和限定類的訪問權(quán)限獨(dú)立命名空間相關(guān)類與接口的集合優(yōu)點(diǎn)容易根據(jù)所需功能找到相關(guān)類每個(gè)包創(chuàng)建新的命名空間,不同包相同名允許同一個(gè)包中的類之間有寬松的訪問控制67包的定義和使用包的定義packagepkg1[.pkg2[.pkg3…]]定義類屬于哪個(gè)包除去空格和注釋,包的定義在最前方包名間以“.”分隔默認(rèn):package.//屬于當(dāng)前目錄,默認(rèn)不寫包成員的使用引入(import)包成員或整個(gè)包,使用短名使用長(zhǎng)名(包名.接口名或類名)[舉例]P131

例5-668packagemyclass.graphics;

這條語句指定這個(gè)包中的文件存儲(chǔ)在目錄path/myclass/graphics下。包層次的根目錄path是由環(huán)境變量CLASSPATH來確定的。packagemyclass.graphics;classSquare{…;}classCircle{…;}classTriangle{…;}myclasspathSquareUsingpackage-169如果在程序Test.java中已定義了包p1,編譯時(shí)采用如下方式:javac-ddestpathTest.java

則編譯器會(huì)自動(dòng)在destpath目錄下建立一個(gè)子目錄p1,并將生成的.class文件都放到destpath/p1下。

destpath可以是環(huán)境變量CLASSPATH中的一個(gè)。Usingpackage-270Usingpackage-3為了方便編程和管理,通常把需要在一起工作的類放在一個(gè)包,類似于文件夾的組織文件的模式。通常一個(gè)類只能引用與它在同一個(gè)包中的類。若需要使用其它包中的類,用import語句引入整個(gè)包或所需要的類。

importpackage1[.package2…].(classname|*);

例如:

importmyclass.graphics.*;

importjava.io.File;也可以直接在類的前面添加完整的包名作為前綴。例如,定義一個(gè)日期對(duì)象:

java.util.Datethedate=newDate(2003,10,1);不推薦使用這種辦法。71Howtouseclasspath為了讓程序找到定義的package,需要:程序或者在定義的package上面的目錄下執(zhí)行,或者把classpath設(shè)置為包含有指向定義的package的路徑。classpath的確切效果和設(shè)置一直在隨java的修訂而變化,所以使用時(shí)最好參考sun的最新說明。<舉例>72Usingpackage-4//Ashortpackagedemonstration.packageBookPack;

classBook{privateStringtitle;privateStringauthor;privateintpubDate;

Book(Stringt,Stringa,intd){title=t;author=a;pubDate=d;}

voidshow(){System.out.println(title);System.out.println(author);System.out.println(pubDate);System.out.println();}}

classBookDemo{publicstaticvoidmain(Stringargs[]){Bookbooks[]=newBook[5];

books[0]=newBook("Java:ABeginner'sGuide","Schildt",2005);books[1]=newBook("Java:TheCompleteReference","Schildt",2005);books[2]=newBook("TheArtofJava","SchildtandHolmes",2003);books[3]=newBook("RedStormRising","Clancy",1986);books[4]=newBook("OntheRoad","Kerouac",1955);

for(inti=0;i<books.length;i++)books[i].show();}}73Usingpackage-5//Bookrecodedforpublicaccess.packageBookPack;

publicclassBook{privateStringtitle;privateStringauthor;privateintpubDate;

//Nowpublic.publicBook(Stringt,Stringa,intd){title=t;author=a;pubDate=d;}

//Nowpublic.publicvoidshow(){System.out.println(title);System.out.println(author);System.out.println(pubDate);System.out.println();}}為了使本包中的類可以被其他包中的類所訪問,需要:把本包中的類聲明為public,且這個(gè)類的構(gòu)造函數(shù)也是public的。如果要訪問本包中類的方法,那么這個(gè)方法也需要聲明是public的或者使用包的全名訪問使用import聲明74usingfullnametoaccessapackage//ThisclassisinpackageBookPackB.packageBookPackB;

//UsetheBookClassfromBookPack.classUseBook{publicstaticvoidmain(Stringargs[]){BookPack.Bookbooks[]=newBookPack.Book[5];

books[0]=newBookPack.Book("Java:ABeginner'sGuide","Schildt",2005);books[1]=newBookPack.Book("Java:TheCompleteReference","Schildt",2005);books[2]=newBookPack.Book("TheArtofJava","SchildtandHolmes",2003);books[3]=newBookPack.Book("RedStormRising","Clancy",1986);books[4]=newBookPack.Book("OntheRoad","Kerouac",1955);

for(inti=0;i<books.length;i++)books[i].show();}}75包的綜合舉例P131

例5-6importgraphics.twoD.*;通常會(huì)出現(xiàn)badclass錯(cuò)誤,java編譯器不smartjava與class同一目錄將*細(xì)化

setclasspath不能立即生效調(diào)用的java主文件在”根”目錄,則不需設(shè)置classpath76包的訪問控制成員變量、成員方法、內(nèi)部類private—私有的protected—受保護(hù)的default—默認(rèn)的public—公開的類publicdefault舉例77內(nèi)部類什么是內(nèi)部類內(nèi)部類的使用訪問外包類所有成員外包類語句塊中定義內(nèi)部類外包類外其他類訪問內(nèi)部類內(nèi)部類的特性78內(nèi)部類的特性內(nèi)部類的類名只用于定義它的類或語句塊內(nèi),在外部引用它時(shí)必須給出帶有外包類名的完整名稱,并且內(nèi)部類的名字不允許與外包類名字相同內(nèi)部類可以訪問外包類的靜態(tài)(static)或?qū)嵗蓡T變量?jī)?nèi)部類可以在成員方法中定義,該成員方法的局部變量及參數(shù)必須是final的才能被該內(nèi)部使用內(nèi)部類可以是抽象類或接口。如果是接口,則可以由其他內(nèi)部類實(shí)現(xiàn)內(nèi)部類可以使用public、protected、default或private等四種訪問權(quán)限控制內(nèi)部類可以被聲明為static(普通類不可),這樣的內(nèi)部類變成頂層類,相當(dāng)于把它放在外面,不再是嵌套的內(nèi)部類,且不包含指向外包類的指針只有頂層可以聲明static成員,若內(nèi)部類需定義static成員,須先將內(nèi)部類聲明為static79包裝類BooleanByteCharacterShortIntegerLongFloatDouble80集合類Collection:集合接口樹的根Set:不能包含重復(fù)的元素SortedSetList:有序的集合Map:實(shí)現(xiàn)鍵值到值的映射(不能重復(fù))SortedMap81實(shí)現(xiàn)Set接口的類HashSet對(duì)象中的元素存儲(chǔ)在Hash表中,存取效率高TreeSet實(shí)現(xiàn)SortedSet的接口,有序(升序)樹結(jié)構(gòu)存儲(chǔ)LinkedHashSet采用鏈表和Hash表相結(jié)合的結(jié)構(gòu)存儲(chǔ)[舉例]P146

例5-1282List接口特有屬性按位置存取元素查找遍歷建立List視圖舉例83異常處理異常的概念異常處理方法自定義異常類84異常的概念概念:在程序運(yùn)行時(shí)打斷正常程序流程的任何不正常的情況稱為錯(cuò)誤或異常出現(xiàn)異常試圖打開的文件不存在網(wǎng)絡(luò)連接中斷操作符越界加載的類找不到[舉例]P155

例6-185異常類層次P156Error與Exception不可恢復(fù)與可恢復(fù)不可處理與可處理86異常處理方法捕獲并處理異常好像traptry-catch-finally將方法產(chǎn)生的異常拋出好像transfermethodDeclarationthrowsException87捕獲并處理異常try-catch-finally語句try{ javastatements; }catch(Exception1e){ javastatements; }catch(Exceptione){ javastatements; }finally{…}通用異常處理Exceptione;…;e.getMessage();[舉例]P159

例6-288將方法中產(chǎn)生的異常拋出聲明異常returnTypemethodName([paramList])throwsexceptionListexceptionList可包含多個(gè)異常類型,用逗號(hào)隔開適用場(chǎng)合方法中調(diào)用了拋出異常的方法方法體中生成并拋出異常對(duì)象P163[舉例]P163

例6-589Applet基礎(chǔ)與高級(jí)編程Applet基本概念A(yù)pplet的編寫Applet中的圖形化用戶界面GUIApplet的多媒體支持Applet的安全控制Applet與外界的通信Applet與Application90Applet基本概念什么是Applet小應(yīng)用程序:web上的java依靠web瀏覽器或javaappletviewer運(yùn)行Applet開發(fā)過程編寫Applet源文件并編譯編寫插入Applet的HTML源文件輸入:appletviewerxxx.html或雙擊xxx.html[舉例]

Chap06_1.java,applet.htmlApplet的運(yùn)行過程瀏覽器加載指定URL的HTML文件瀏覽器解析HTML文件瀏覽器加載HTML文件中指定URL的Applet類瀏覽器中的Java運(yùn)行環(huán)境運(yùn)行該Applet類91Applet的類層次結(jié)構(gòu)每一個(gè)Applet都繼承自java.applet.Applet類,并且每個(gè)Applet都有一個(gè)主程序類,之前必須加上public92Applet的生命周期-1生命周期:加載->創(chuàng)建->運(yùn)行->消亡initstartstopdestroy裝載Applet時(shí)調(diào)用,初始化操作初始化后,訪問時(shí)調(diào)用Applet停止時(shí)調(diào)用,一般發(fā)生在頁(yè)面重定向或關(guān)閉前在瀏覽器完全關(guān)閉之前調(diào)用重新裝入或改變?yōu)g覽器大小或返回web頁(yè)面93Applet的生命周期-2Applet中沒有main()方法。當(dāng)Applet被瀏覽器運(yùn)行時(shí),init()、start()、stop()、destroy()方法等自動(dòng)執(zhí)行:init()方法:初始化,自動(dòng)調(diào)用,只執(zhí)行一次。本方法主要完成一些在Applet構(gòu)造方法所不能完成的工作。start()方法:初始化后,重入等都將自動(dòng)調(diào)用。本方法是Applet的主體,在其中可以執(zhí)行一些任務(wù)或啟動(dòng)相關(guān)的線程來執(zhí)行任務(wù)。stop()方法:離開Applet所在頁(yè)面時(shí)調(diào)用,以停止消耗系統(tǒng)資源。destroy()方法:瀏覽器關(guān)閉時(shí)自動(dòng)調(diào)用,以清除Applet所用的所有資源。94Applet的生命周期-3除了四個(gè)Applet生命周期控制的方法外,Applet類還提供了一些其他有用的方法:

publicAppletContext

getAppletContext()返回AppletContext實(shí)例

publicString

getAppletInfo()報(bào)告關(guān)于Applet的作者、版權(quán)、版號(hào)等信息

publicURL

getDocumentBase()返回包含Applet的HTML文件的URLpublicURL

getCodeBase()

返回Applet主類的URLpublicString

getParameter(String

name)

返回定義在HTML文件的</PARAM>標(biāo)記中指定參數(shù)的值,如果參數(shù)不存在,返回null95Applet的顯示-1AWTThreadrepaintupdatepaint程序調(diào)用初次顯示、遮蓋、調(diào)整大小、最大化、最小化等96Applet的顯示-2paint()Update()Repaint()Graphics類:相當(dāng)于畫筆drawLine()drawRect();fillRect()draw3Drect();fill3Drect()drawRoundRect();fillRoundRect()drawOval();fillOval()drawArc();fillArc()drawPolygon();drawPolyline();fillPoly

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論