版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1Java語言程式設(shè)計—緒論
2緒論什麼是JavaJava的起源與發(fā)展Java語法機制JVMJava程式開發(fā)3什麼是JavaJava是一種編程語言一種開發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境句法與C++相似,語義與SmallTalk相似用來開發(fā)applets和applications當今最流行的應(yīng)用程式與網(wǎng)路開發(fā)語言之一4Java的起源與發(fā)展Java的發(fā)展歷史1991年Green小組創(chuàng)建,面向家電市場以C/C++為基礎(chǔ),創(chuàng)建Oak1995年將Oak應(yīng)用於WWW上,更名為JavaHotJava—支持Java的WWW流覽器;Java與HotJava均採用免費策略1996年,JDK1.01998年,Java2平臺5Java技術(shù)體系J2SE:Java2PlatformStandardEditionJ2EE:Java2PlatformEnterpriseEditionJ2ME:Java2PlatformMicroEditionP6J2SE組成JSP簡介(J2EE)6Java運行原理Test.javaCompilerTest.classInterpreter1JVM(Win32)1001010…Interpreter2JVM(Solaris)Interpreter3JVM(MacOS)1001010…1001010…7Java的特徵簡單性面向?qū)ο蠓謥咽桨刖幾g、半解釋健壯性安全性體系結(jié)構(gòu)中立可移植性高性能多線程動態(tài)特性8Java語法機制區(qū)別於C++語法機制類不允許一個類同時繼承多個父類引進abstract和final修飾詞介面程式包多線程取消指針9JVMHello.javaJavacHello.javaHello.classJVMClassLoaderByteCodeVerifierInterpreterJITCodeGeneratorRuntime本地系統(tǒng)CompileRuntimeInternet
加載代碼驗證代碼執(zhí)行代碼10Java程式開發(fā)JavaAPIjava.langjava.iojava.utiljava.awtjava.awt.eventjava.appletjava.sql11Java程式的編寫與編譯一個基本的Java應(yīng)用程式Chap01.java:列印HelloWorld!javacchap01.javajavachap0112編譯常見錯誤javac:CommandnotfoundHelloWorldApp.java:6:Methodprintl(java.lang.String)notfoundinclassjava.io.PrintStream.System. out.printl("HelloWorld!");InclassHelloWorldApp:mainmustbepublicorstaticcan’tfindclassHelloWorldApp類計數(shù)13Java語言基礎(chǔ)識別字與數(shù)據(jù)類型運算式與語句程式控制語句數(shù)組14識別字與數(shù)據(jù)類型注釋分號、塊和空白識別字基本java類型15注釋三種允許的Java技術(shù)程式注釋風(fēng)格//commentononeline/*commentonone ormoreline*//**documentingcomment*/16分號、塊和空白一個語句是一行用分號(;)終止的代碼totals=a+b+c+d+e+f;一個塊是以上括弧和下括弧為邊界的語句集合
{ x=y+1; y=x+1; }一個塊可被用在一個類的定義中
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和新行)可以改善你的對源代碼的視覺感受。{intx;x=23*54;}
intx;x=23+54;}19識別字是賦予變數(shù)、類和方法的名稱可從一個字母、下劃線(_)或美元符號($)開始是大小寫區(qū)別對待的,且無最大長度[舉例]identifieruserNameUser_name_sys_varl$change20Java關(guān)鍵字abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis21關(guān)鍵字—幾點注意true、false和null為小寫無sizeof運算符goto和const不是Java編程語言中使用的關(guān)鍵字22基本Java類型Java編程語言定義了八個原始類型邏輯類boolean文本類char整數(shù)類byte,short,int,long浮點類double,float23文本類──char和Stringchar代表一個16-bitUnicode字元必須包含用單引號(’’)引用的文字使用下列符號:‘a(chǎn)’‘\t’一個跳位字元‘\u????’一個特殊的Unicode字元,????應(yīng)嚴格使用四個16進制數(shù)進行替換[舉例]Chap02_1.javaString(StringBuffer:可對字串的值進行修改)不是一個原始數(shù)據(jù)類型,它是一個類具有用雙引號引用的文字可按如下情形使用:Stringgreeting=“GoodMorning!!\n”;Stringerr_meg=“recordnotfound!”;24整數(shù)類──byte,short,int,long採用三種進制─十進位、八進制和16進制具有缺省int用字母“L”和“l(fā)”定義long25浮點─float和double缺省為double浮點文字包括小數(shù)點或下列各項之一E或e(增加指數(shù)值)F或f(float)D或d(double)舉例:3.14一個簡單的浮點值(adouble)4.02E23一個大浮點值2.718F一個簡單的float長度值123.4E+306D一個大的帶冗餘D的double值P42
例3-326運算式與語句變數(shù)、聲明和賦值Java編碼約定理解對象運算符運算式變數(shù)及作用域27變數(shù)、聲明和賦值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)該是動詞,大小寫可混用,但首字母應(yīng)小寫。在每個方法名內(nèi),大寫字母將詞分隔並限制使用下劃線。balanceAccount()addComplex()Variables──所有變數(shù)都可大小寫混用,但首字元應(yīng)小寫。詞由大寫字母分隔,限制用下劃線,限制使用美元符號($),因為這個字元對內(nèi)部類有特殊的含義。currentCustomer變數(shù)應(yīng)該代表一定的含義,通過它可傳達給讀者使用它的意圖。儘量避免使用單個字元,除非是臨時“即用即扔”的變數(shù)(例如,用i,j,k作為迴圈控制變數(shù))30Java編碼約定-2spacing──每行只寫一個語句並使用四個縮進的空格使你的代碼更易讀。comments──用注釋來說明那些不明顯的代碼段落;對一般注釋使用//分隔符號,而大段的代碼可使用/*???*/分隔符號。使用/**???*/將注釋形成文檔,並輸入給javadoc以生成HTML代碼文檔舉例://Acommentthattakesuponlyoneline./*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines...*//**Acommentfordocumentationpurposes.31理解對象回顧對象的歷史創(chuàng)建一個新類型創(chuàng)建一個對象—記憶體分配或佈局32運算式變數(shù)和作用域變數(shù)初始化運算符邏輯運算式位運算布爾邏輯運算符用加號(+)進行串鏈接右移位運算符左移位運算符類型轉(zhuǎn)換升級和運算式的類型轉(zhuǎn)換33變數(shù)及作用域局部變數(shù)方法或塊內(nèi)有效類成員變數(shù)static:類內(nèi)有效非static:對象內(nèi)有效方法參數(shù)方法內(nèi)有效異常處理參數(shù)catch語句後{}內(nèi)有效P48
圖3-6、例3-434運算符與運算式算術(shù)運算符P50
算術(shù)運算符優(yōu)先順序與自動轉(zhuǎn)換規(guī)則23:java.lang.Math.pow(2,3);關(guān)係運算符邏輯運算符P53
邏輯運算符表位操作符賦值操作符35位操作符位邏輯運算符按位與&按位或|按位異或^按位取反~位移位運算符P55[注意]右移運算符>>左移運算符<<無符號右移運算符>>>36賦值操作符擴展賦值運算符:P56
表3-16自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換其他運算符?:[].()Newinstanceof運算符的優(yōu)先順序:P57
表3-1837強制類型轉(zhuǎn)換語法(type)expression舉例longbigValue=99L; intintValue=(int)bigValue;[注意]原始類型和數(shù)組、對象等引用類型變數(shù)間不能相互轉(zhuǎn)換38程式控制語句迴圈語句分支語句跳轉(zhuǎn)語句異常處理語句39迴圈語句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對象的生命週期類的繼承與多態(tài)44概述Java語言的OOP特性封裝繼承多態(tài)類和對象的基本概念例4-145類的定義類的基本結(jié)構(gòu)類的聲明:<modifiers>class<class_name>類體P81圖4-1 [<attributedeclare>] [<constructordeclare>] [<methodsdeclare>]類的封裝與資訊隱藏P82例4-2成員變數(shù)基本四態(tài):public、protected、private、—成員方法方法聲明:P83[舉例]P84例4-3方法調(diào)用中的參數(shù)傳遞:傳值(包括地址)P85例4-446方法重載Overloading——允許在一個類的定義中,多個方法使用相同的方法名(多態(tài):編譯時多態(tài))舉例publicvoidprintln() publicvoidprintln(inti) publicvoidprintln(floatf) publicvoidprintln(Stringstr) publicvoidprintln(Objectx)P88
例4-547構(gòu)造方法-1基本格式[public|protected|private]<classname>([<argumentlist>]){ [<statements>] }特點構(gòu)造方法的名稱必須和類名相同構(gòu)造方法不能有返回值用戶不能直接調(diào)用構(gòu)造方法,必須通過關(guān)鍵字new自動調(diào)用[舉例]P90
例4-7類成員變數(shù)的賦值:初始化->顯式->構(gòu)造48構(gòu)造方法-2缺省的構(gòu)造方法沒有參數(shù)系統(tǒng)自動添加初始化對象重載構(gòu)造方法一般加上缺省情況[舉例]P91
例4-849對象的生命週期對象的創(chuàng)建P94
圖4-4new分配記憶體空間顯式初始化構(gòu)造方法初始化對象的使用對象的清除對象的引用與多個引用空間finalize();gc();50類的繼承與多態(tài)-1子類定義ClassSubClassextendsSuperClass{…}分析電子商務(wù)售書網(wǎng)站(不同類書、其他類)特性子類繼承父類所有屬性和方法,除了private修飾的屬性和方法構(gòu)造方法只要聲明自己特有的屬性和方法51類的繼承與多態(tài)-2單繼承extends
後面實現(xiàn)一個類名P97
圖4-5多重繼承只能靠介面實現(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子類對象的創(chuàng)建與實例化子類對象的創(chuàng)建與初始化分配對象所需要的全部記憶體空間,並初始化按繼承關(guān)係,自頂向下顯式初始化按繼承關(guān)係,自頂向下調(diào)用構(gòu)造方法幾點注意先從各級父類繼承部分完全初始化顯式初始化構(gòu)造初始化調(diào)用父類構(gòu)造方法(super或默認)[案例分析]P99
例4-1053方法的重寫(overriding)為什麼要方法重寫?隱藏父類成員變數(shù)或成員方法怎麼實現(xiàn)方法重寫?子類中重寫方法的返回值類型必須與父類中被重寫方法的返回值類型相同子類中重寫方法的方法名和參數(shù)列表必須與父類中被重寫方法的方法名和參數(shù)列表相同子類中重寫方法的訪問許可權(quán)不能縮小子類中重寫方法不能拋出新的異常方法重寫舉例P101例4-1154運行時多態(tài)多態(tài)的本質(zhì)對外一個介面,內(nèi)部多種實現(xiàn)運行時多態(tài)(晚聯(lián)編)P104
與編譯時多態(tài)上溯造型(upcasting)子類對象引用轉(zhuǎn)成父類對象引用從extends到超集(子類是父類的超集)可以創(chuàng)建不同類型對象的數(shù)組下溯造型(downcasting)父類對象引用轉(zhuǎn)成子類對象引用強制類型轉(zhuǎn)換55Java高級特性static關(guān)鍵字final關(guān)鍵字抽象類介面包訪問控制內(nèi)部類其他類56static關(guān)鍵字static含義:靜態(tài)的、作用域:所屬類類變數(shù)/靜態(tài)變數(shù)所屬類的所有實例變數(shù)中都可以訪問private類方法/靜態(tài)方法57靜態(tài)初始化程式語法static{
… }[舉例]P118
例5-358final關(guān)鍵字作用範圍類的聲明:不能再派生子類成員方法:不能被重寫成員變數(shù):常量[舉例]P119
例5-459抽象類概念包含一個或多個抽象方法只有聲明,沒有方法體稱為抽象方法特點abstract修飾除了沒有方法體,其他和class一樣不能創(chuàng)建抽象類實例抽象類的子類可以創(chuàng)建實例(非抽象方法)抽象類的含義P121
圖5-160關(guān)於樹狀結(jié)構(gòu)不足之處的例子介面的引出-161卡車、輪船、噴氣機這些子類都以汽油為動力燃料所以具有一些相同的屬性和方法,如每公里耗油量、剩餘油量、加油操作、獲取剩餘油量等為使程式簡潔,可把這些公共屬性和方法放在父類交通工具中,然後由子類、子類的子類繼承但必將產(chǎn)生一個問題:自行車等非燃油交通工具子類也繼承了這些屬性和方法,這很不合理另外,子類層次越下,繼承的無效的方法越多,難以管理和掌握介面的引出-262解決方法把用於完成特定功能的若干屬性和方法組織成相對獨立的集合,凡是需要實現(xiàn)這種特定功能的類,都可以繼承該集合,並在類內(nèi)使用它。上述集合就是介面。在上面的例子中,可以定義一個用來完成燃油功能的介面“可燃油的”包含相關(guān)屬性功能,卡車、輪船、噴氣機這些類均可以通過實現(xiàn)該介面來擁有燃油功能。介面的引出-363介面的引出-464介面概念聲明方法,不定義方法體一組對外的公共介面語法[public]interfaceInterfaceName[extendsListOfSuperInterface]{ typeNAME=value; returnTypemethodName([paramlist]);
}介面的實現(xiàn)implementsInterfaceName可以使用介面中定義的常量必須實現(xiàn)介面定義的所有方法實現(xiàn)多態(tài):P124
圖5-2例5-565多重繼承[舉例]P127
圖5-4擴展介面創(chuàng)建子介面:extendsInterfaceName介面與抽象類介面與抽象類的所有方法都是抽象的,但抽象類有空方法體一個類可以實現(xiàn)多個介面,而只能繼承一個抽象父類介面不構(gòu)成類的繼承體系,因此條件比較寬鬆;抽象類一般位於類的頂層一般使用介面;需要成員變數(shù)和完整方法定義時,使用抽象類66包(package)OOP的封裝思想:將相關(guān)功能的介面和類放到同一目錄中,同時避免命名衝突和限定類的訪問許可權(quán)獨立命名空間相關(guān)類與介面的集合優(yōu)點容易根據(jù)所需功能找到相關(guān)類每個包創(chuàng)建新的命名空間,不同包相同名允許同一個包中的類之間有寬鬆的訪問控制67包的定義和使用包的定義packagepkg1[.pkg2[.pkg3…]]定義類屬於哪個包除去空格和注釋,包的定義在最前方包名間以“.”分隔默認:package.//屬於當前目錄,默認不寫包成員的使用引入(import)包成員或整個包,使用短名使用長名(包名.介面名或類名)[舉例]P131
例5-668packagemyclass.graphics;
這條語句指定這個包中的檔存儲在目錄path/myclass/graphics下。包層次的根目錄path是由環(huán)境變數(shù)CLASSPATH來確定的。packagemyclass.graphics;classSquare{…;}classCircle{…;}classTriangle{…;}myclasspathSquareUsingpackage-169如果在程式Test.java中已定義了包p1,編譯時採用如下方式:javac-ddestpathTest.java
則編譯器會自動在destpath目錄下建立一個子目錄p1,並將生成的.class檔都放到destpath/p1下。
destpath可以是環(huán)境變數(shù)CLASSPATH中的一個。Usingpackage-270Usingpackage-3為了方便編程和管理,通常把需要在一起工作的類放在一個包,類似於檔夾的組織檔的模式。通常一個類只能引用與它在同一個包中的類。若需要使用其他包中的類,用import語句引入整個包或所需要的類。
importpackage1[.package2…].(classname|*);
例如:
importmyclass.graphics.*;
importjava.io.File;也可以直接在類的前面添加完整的包名作為首碼。例如,定義一個日期對象:
java.util.Datethedate=newDate(2003,10,1);不推薦使用這種辦法。71Howtouseclasspath為了讓程式找到定義的package,需要:程式或者在定義的package上面的目錄下執(zhí)行,或者把classpath設(shè)置為包含有指向定義的package的路徑。classpath的確切效果和設(shè)置一直在隨java的修訂而變化,所以使用時最好參考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òu)造函數(shù)也是public的。如果要訪問本包中類的方法,那麼這個方法也需要聲明是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.*;通常會出現(xiàn)badclass錯誤,java編譯器不smartjava與class同一目錄將*細化
setclasspath不能立即生效調(diào)用的java主文件在”根”目錄,則不需設(shè)置classpath76包的訪問控制成員變數(shù)、成員方法、內(nèi)部類private—私有的protected—受保護的default—默認的public—公開的類publicdefault舉例77內(nèi)部類什麼是內(nèi)部類內(nèi)部類的使用訪問外包類所有成員外包類語句塊中定義內(nèi)部類外包類外其他類訪問內(nèi)部類內(nèi)部類的特性78內(nèi)部類的特性內(nèi)部類的類名只用於定義它的類或語句塊內(nèi),在外部引用它時必須給出帶有外包類名的完整名稱,並且內(nèi)部類的名字不允許與外包類名字相同內(nèi)部類可以訪問外包類的靜態(tài)(static)或?qū)嵗蓡T變數(shù)內(nèi)部類可以在成員方法中定義,該成員方法的局部變數(shù)及參數(shù)必須是final的才能被該內(nèi)部使用內(nèi)部類可以是抽象類或介面。如果是介面,則可以由其他內(nèi)部類實現(xiàn)內(nèi)部類可以使用public、protected、default或private等四種訪問許可權(quán)控制內(nèi)部類可以被聲明為static(普通類不可),這樣的內(nèi)部類變成頂層類,相當於把它放在外面,不再是嵌套的內(nèi)部類,且不包含指向外包類的指針只有頂層可以聲明static成員,若內(nèi)部類需定義static成員,須先將內(nèi)部類聲明為static79包裝類BooleanByteCharacterShortIntegerLongFloatDouble80集合類Collection:集合介面樹的根Set:不能包含重複的元素SortedSetList:有序的集合Map:實現(xiàn)鍵值到值的映射(不能重複)SortedMap81實現(xiàn)Set介面的類HashSet對象中的元素存儲在Hash表中,存取效率高TreeSet實現(xiàn)SortedSet的介面,有序(昇冪)樹結(jié)構(gòu)存儲LinkedHashSet採用鏈表和Hash表相結(jié)合的結(jié)構(gòu)存儲[舉例]P146
例5-1282List介面特有屬性按位置存取元素查找遍曆建立List視圖舉例83異常處理異常的概念異常處理方法自定義異常類84異常的概念概念:在程式運行時打斷正常程式流程的任何不正常的情況稱為錯誤或異常出現(xiàn)異常試圖打開的檔不存在網(wǎng)路連接中斷操作符越界加載的類找不到[舉例]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可包含多個異常類型,用逗號隔開適用場合方法中調(diào)用了拋出異常的方法方法體中生成並拋出異常對象P163[舉例]P163
例6-589Applet基礎(chǔ)與高級編程Applet基本概念A(yù)pplet的編寫Applet中的圖形化用戶介面GUIApplet的多媒體支持Applet的安全控制Applet與外界的通信Applet與Application90Applet基本概念什麼是Applet小應(yīng)用程式:web上的java依靠web流覽器或javaappletviewer運行Applet開發(fā)過程編寫Applet原始檔案並編譯編寫插入Applet的HTML原始檔案輸入:appletviewerxxx.html或雙擊xxx.html[舉例]
Chap06_1.java,applet.htmlApplet的運行過程流覽器加載指定URL的HTML檔流覽器解析HTML檔流覽器加載HTML檔中指定URL的Applet類流覽器中的Java運行環(huán)境運行該Applet類91Applet的類層次結(jié)構(gòu)每一個Applet都繼承自java.applet.Applet類,並且每個Applet都有一個主程序類,之前必須加上public92Applet的生命週期-1生命週期:加載->創(chuàng)建->運行->消亡initstartstopdestroy裝載Applet時調(diào)用,初始化操作初始化後,訪問時調(diào)用Applet停止時調(diào)用,一般發(fā)生在頁面重定向或關(guān)閉前在流覽器完全關(guān)閉之前調(diào)用重新裝入或改變流覽器大小或返回web頁面93Applet的生命週期-2Applet中沒有main()方法。當Applet被流覽器運行時,init()、start()、stop()、destroy()方法等自動執(zhí)行:init()方法:初始化,自動調(diào)用,只執(zhí)行一次。本方法主要完成一些在Applet構(gòu)造方法所不能完成的工作。start()方法:初始化後,重入等都將自動調(diào)用。本方法是Applet的主體,在其中可以執(zhí)行一些任務(wù)或啟動相關(guān)的線程來執(zhí)行任務(wù)。stop()方法:離開Applet所在頁面時調(diào)用,以停止消耗系統(tǒng)資源。destroy()方法:流覽器關(guān)閉時自動調(diào)用,以清除Applet所用的所有資源。94Applet的生命週期-3除了四個Applet生命週期控制的方法外,Applet類還提供了一些其他有用的方法:
publicAppletContext
getAppletContext()返回AppletContext實例
publicString
getAppletInfo()報告關(guān)於Applet的作者、版權(quán)、版號等資訊
publicURL
getDocumentBase()返回包含Applet的HTML檔的URLpublicURL
getCodeBase()
返回Applet主類的URLpublicString
getParameter(String
name)
返回定義在HTML檔的</PARAM>標記中指定參數(shù)的值,如果參數(shù)不存在,返回null95Applet的顯示-1AWTThreadrepaintupdatepaint程式調(diào)用初次顯示、遮蓋、調(diào)整大小、最大化、最小化等96Applet的顯示-2paint()Update()Repaint()Graphics類:相當於畫筆drawLine()drawRect();fillRect()draw3Drect();fill3Drect()drawRoundRect();fillRoundRect()drawOval();fillOval()drawArc();fillArc()drawPolygon();drawPolyline();fill
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 認識腧穴38課件講解
- 統(tǒng)編版二年級下冊語文《千人糕》 課件完整版
- 2025年度美容美發(fā)行業(yè)技師崗位競聘合同4篇
- 二零二五年度專業(yè)派遣服務(wù)合同示范文本4篇
- 2025年滬科版九年級數(shù)學(xué)上冊月考試卷含答案
- 2025年貴州貴安建設(shè)集團有限公司招聘筆試參考題庫含答案解析
- 2025年海南洋浦供水有限責任公司招聘筆試參考題庫含答案解析
- 2025年山東墾利石化集團有限公司招聘筆試參考題庫含答案解析
- 2025年湖南長沙綜保投資有限公司招聘筆試參考題庫含答案解析
- 2025年浙江省中廣有線紹興分公司招聘筆試參考題庫含答案解析
- 2025水利云播五大員考試題庫(含答案)
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(2024版)解讀
- 中藥飲片驗收培訓(xùn)
- 手術(shù)室??谱o士工作總結(jié)匯報
- DB34T 1831-2013 油菜收獲與秸稈粉碎機械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 蘇州市2025屆高三期初陽光調(diào)研(零模)政治試卷(含答案)
- 創(chuàng)傷處理理論知識考核試題及答案
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 《義務(wù)教育數(shù)學(xué)課程標準(2022年版)》測試題+答案
- 殘疾軍人新退休政策
- 白酒代理合同范本
評論
0/150
提交評論