![Java語(yǔ)言程序設(shè)計(jì)課件_第1頁(yè)](http://file4.renrendoc.com/view14/M02/13/06/wKhkGWeQ28KAVG5JAACR06kCMss601.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課件_第2頁(yè)](http://file4.renrendoc.com/view14/M02/13/06/wKhkGWeQ28KAVG5JAACR06kCMss6012.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課件_第3頁(yè)](http://file4.renrendoc.com/view14/M02/13/06/wKhkGWeQ28KAVG5JAACR06kCMss6013.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課件_第4頁(yè)](http://file4.renrendoc.com/view14/M02/13/06/wKhkGWeQ28KAVG5JAACR06kCMss6014.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課件_第5頁(yè)](http://file4.renrendoc.com/view14/M02/13/06/wKhkGWeQ28KAVG5JAACR06kCMss6015.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1Java語(yǔ)言程式設(shè)計(jì)—緒論
2緒論什麼是JavaJava的起源與發(fā)展Java語(yǔ)法機(jī)制JVMJava程式開(kāi)發(fā)3什麼是JavaJava是一種編程語(yǔ)言一種開(kāi)發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境句法與C++相似,語(yǔ)義與SmallTalk相似用來(lái)開(kāi)發(fā)applets和applications當(dāng)今最流行的應(yīng)用程式與網(wǎng)路開(kāi)發(fā)語(yǔ)言之一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均採(cǎi)用免費(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)中立可移植性高性能多線(xiàn)程動(dòng)態(tài)特性8Java語(yǔ)法機(jī)制區(qū)別於C++語(yǔ)法機(jī)制類(lèi)不允許一個(gè)類(lèi)同時(shí)繼承多個(gè)父類(lèi)引進(jìn)abstract和final修飾詞介面程式包多線(xiàn)程取消指針9JVMHello.javaJavacHello.javaHello.classJVMClassLoaderByteCodeVerifierInterpreterJITCodeGeneratorRuntime本地系統(tǒng)CompileRuntimeInternet
加載代碼驗(yàn)證代碼執(zhí)行代碼10Java程式開(kāi)發(fā)JavaAPIjava.langjava.iojava.utiljava.awtjava.awt.eventjava.appletjava.sql11Java程式的編寫(xiě)與編譯一個(gè)基本的Java應(yīng)用程式Chap01.java:列印HelloWorld!javacchap01.javajavachap0112編譯常見(jiàn)錯(cuò)誤javac:CommandnotfoundHelloWorldApp.java:6:Methodprintl(java.lang.String)notfoundinclassjava.io.PrintStream.System. out.printl("HelloWorld!");InclassHelloWorldApp:mainmustbepublicorstaticcan’tfindclassHelloWorldApp類(lèi)計(jì)數(shù)13Java語(yǔ)言基礎(chǔ)識(shí)別字與數(shù)據(jù)類(lèi)型運(yùn)算式與語(yǔ)句程式控制語(yǔ)句數(shù)組14識(shí)別字與數(shù)據(jù)類(lèi)型注釋分號(hào)、塊和空白識(shí)別字基本java類(lèi)型15注釋三種允許的Java技術(shù)程式注釋風(fēng)格//commentononeline/*commentonone ormoreline*//**documentingcomment*/16分號(hào)、塊和空白一個(gè)語(yǔ)句是一行用分號(hào)(;)終止的代碼totals=a+b+c+d+e+f;一個(gè)塊是以上括弧和下括弧為邊界的語(yǔ)句集合
{ x=y+1; y=x+1; }一個(gè)塊可被用在一個(gè)類(lèi)的定義中
publicclassDate{intday; intmonth;intyear;}塊語(yǔ)句可被嵌套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ì)源代碼的視覺(jué)感受。{intx;x=23*54;}
intx;x=23+54;}19識(shí)別字是賦予變數(shù)、類(lèi)和方法的名稱(chēng)可從一個(gè)字母、下劃線(xiàn)(_)或美元符號(hào)($)開(kāi)始是大小寫(xiě)區(qū)別對(duì)待的,且無(wú)最大長(zhǎng)度[舉例]identifieruserNameUser_name_sys_varl$change20Java關(guān)鍵字abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis21關(guān)鍵字—幾點(diǎn)注意true、false和null為小寫(xiě)無(wú)sizeof運(yùn)算符goto和const不是Java編程語(yǔ)言中使用的關(guān)鍵字22基本Java類(lèi)型Java編程語(yǔ)言定義了八個(gè)原始類(lèi)型邏輯類(lèi)boolean文本類(lèi)char整數(shù)類(lèi)byte,short,int,long浮點(diǎn)類(lèi)double,float23文本類(lèi)──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ù)類(lèi)型,它是一個(gè)類(lèi)具有用雙引號(hào)引用的文字可按如下情形使用:Stringgreeting=“GoodMorning!!\n”;Stringerr_meg=“recordnotfound!”;24整數(shù)類(lèi)──byte,short,int,long採(cǎi)用三種進(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運(yùn)算式與語(yǔ)句變數(shù)、聲明和賦值Java編碼約定理解對(duì)象運(yùn)算符運(yùn)算式變數(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─類(lèi)名應(yīng)該是名詞,大小寫(xiě)可混用,但首字母應(yīng)大寫(xiě)classAccountBookclassComplexVariableinterface──介面名大小寫(xiě)規(guī)則與類(lèi)名相同interfaceAccountmethod──方法名應(yīng)該是動(dòng)詞,大小寫(xiě)可混用,但首字母應(yīng)小寫(xiě)。在每個(gè)方法名內(nèi),大寫(xiě)字母將詞分隔並限制使用下劃線(xiàn)。balanceAccount()addComplex()Variables──所有變數(shù)都可大小寫(xiě)混用,但首字元應(yīng)小寫(xiě)。詞由大寫(xiě)字母分隔,限制用下劃線(xiàn),限制使用美元符號(hào)($),因?yàn)檫@個(gè)字元對(duì)內(nèi)部類(lèi)有特殊的含義。currentCustomer變數(shù)應(yīng)該代表一定的含義,通過(guò)它可傳達(dá)給讀者使用它的意圖。儘量避免使用單個(gè)字元,除非是臨時(shí)“即用即扔”的變數(shù)(例如,用i,j,k作為迴圈控制變數(shù))30Java編碼約定-2spacing──每行只寫(xiě)一個(gè)語(yǔ)句並使用四個(gè)縮進(jìn)的空格使你的代碼更易讀。comments──用注釋來(lái)說(shuō)明那些不明顯的代碼段落;對(duì)一般注釋使用//分隔符號(hào),而大段的代碼可使用/*???*/分隔符號(hào)。使用/**???*/將注釋形成文檔,並輸入給javadoc以生成HTML代碼文檔舉例://Acommentthattakesuponlyoneline./*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines...*//**Acommentfordocumentationpurposes.31理解對(duì)象回顧對(duì)象的歷史創(chuàng)建一個(gè)新類(lèi)型創(chuàng)建一個(gè)對(duì)象—記憶體分配或佈局32運(yùn)算式變數(shù)和作用域變數(shù)初始化運(yùn)算符邏輯運(yùn)算式位運(yùn)算布爾邏輯運(yùn)算符用加號(hào)(+)進(jìn)行串鏈接右移位運(yùn)算符左移位運(yùn)算符類(lèi)型轉(zhuǎn)換升級(jí)和運(yùn)算式的類(lèi)型轉(zhuǎn)換33變數(shù)及作用域局部變數(shù)方法或塊內(nèi)有效類(lèi)成員變數(shù)static:類(lèi)內(nèi)有效非static:對(duì)象內(nèi)有效方法參數(shù)方法內(nèi)有效異常處理參數(shù)catch語(yǔ)句後{}內(nèi)有效P48
圖3-6、例3-434運(yùn)算符與運(yùn)算式算術(shù)運(yùn)算符P50
算術(shù)運(yùn)算符優(yōu)先順序與自動(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)算符<<無(wú)符號(hào)右移運(yùn)算符>>>36賦值操作符擴(kuò)展賦值運(yùn)算符:P56
表3-16自動(dòng)類(lèi)型轉(zhuǎn)換與強(qiáng)制類(lèi)型轉(zhuǎn)換其他運(yùn)算符?:[].()Newinstanceof運(yùn)算符的優(yōu)先順序:P57
表3-1837強(qiáng)制類(lèi)型轉(zhuǎn)換語(yǔ)法(type)expression舉例longbigValue=99L; intintValue=(int)bigValue;[注意]原始類(lèi)型和數(shù)組、對(duì)象等引用類(lèi)型變數(shù)間不能相互轉(zhuǎn)換38程式控制語(yǔ)句迴圈語(yǔ)句分支語(yǔ)句跳轉(zhuǎn)語(yǔ)句異常處理語(yǔ)句39迴圈語(yǔ)句whiledo…while[舉例]Chap02_2.javafor[舉例]P61
例3-840java中的數(shù)據(jù)類(lèi)型轉(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ù)類(lèi)型轉(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ù)類(lèi)型轉(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ū)ο筇匦愿攀鲱?lèi)的定義對(duì)象的生命週期類(lèi)的繼承與多態(tài)44概述Java語(yǔ)言的OOP特性封裝繼承多態(tài)類(lèi)和對(duì)象的基本概念例4-145類(lèi)的定義類(lèi)的基本結(jié)構(gòu)類(lèi)的聲明:<modifiers>class<class_name>類(lèi)體P81圖4-1 [<attributedeclare>] [<constructordeclare>] [<methodsdeclare>]類(lèi)的封裝與資訊隱藏P82例4-2成員變數(shù)基本四態(tài):public、protected、private、—成員方法方法聲明:P83[舉例]P84例4-3方法調(diào)用中的參數(shù)傳遞:傳值(包括地址)P85例4-446方法重載Overloading——允許在一個(gè)類(lèi)的定義中,多個(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)造方法的名稱(chēng)必須和類(lèi)名相同構(gòu)造方法不能有返回值用戶(hù)不能直接調(diào)用構(gòu)造方法,必須通過(guò)關(guān)鍵字new自動(dòng)調(diào)用[舉例]P90
例4-7類(lèi)成員變數(shù)的賦值:初始化->顯式->構(gòu)造48構(gòu)造方法-2缺省的構(gòu)造方法沒(méi)有參數(shù)系統(tǒng)自動(dòng)添加初始化對(duì)象重載構(gòu)造方法一般加上缺省情況[舉例]P91
例4-849對(duì)象的生命週期對(duì)象的創(chuàng)建P94
圖4-4new分配記憶體空間顯式初始化構(gòu)造方法初始化對(duì)象的使用對(duì)象的清除對(duì)象的引用與多個(gè)引用空間finalize();gc();50類(lèi)的繼承與多態(tài)-1子類(lèi)定義ClassSubClassextendsSuperClass{…}分析電子商務(wù)售書(shū)網(wǎng)站(不同類(lèi)書(shū)、其他類(lèi))特性子類(lèi)繼承父類(lèi)所有屬性和方法,除了private修飾的屬性和方法構(gòu)造方法只要聲明自己特有的屬性和方法51類(lèi)的繼承與多態(tài)-2單繼承extends
後面實(shí)現(xiàn)一個(gè)類(lèi)名P97
圖4-5多重繼承只能靠介面實(shí)現(xiàn)this與super關(guān)鍵字P98
例4-9this() //調(diào)用本類(lèi)的構(gòu)造方法this.someMethod() //調(diào)用本類(lèi)的方法/屬性super() //調(diào)用父類(lèi)的構(gòu)造方法super.someMethod() //調(diào)用父類(lèi)的方法/屬性[討論]
去掉super和thisChap03_2.java52子類(lèi)對(duì)象的創(chuàng)建與實(shí)例化子類(lèi)對(duì)象的創(chuàng)建與初始化分配對(duì)象所需要的全部記憶體空間,並初始化按繼承關(guān)係,自頂向下顯式初始化按繼承關(guān)係,自頂向下調(diào)用構(gòu)造方法幾點(diǎn)注意先從各級(jí)父類(lèi)繼承部分完全初始化顯式初始化構(gòu)造初始化調(diào)用父類(lèi)構(gòu)造方法(super或默認(rèn))[案例分析]P99
例4-1053方法的重寫(xiě)(overriding)為什麼要方法重寫(xiě)?隱藏父類(lèi)成員變數(shù)或成員方法怎麼實(shí)現(xiàn)方法重寫(xiě)?子類(lèi)中重寫(xiě)方法的返回值類(lèi)型必須與父類(lèi)中被重寫(xiě)方法的返回值類(lèi)型相同子類(lèi)中重寫(xiě)方法的方法名和參數(shù)列表必須與父類(lèi)中被重寫(xiě)方法的方法名和參數(shù)列表相同子類(lèi)中重寫(xiě)方法的訪(fǎng)問(wèn)許可權(quán)不能縮小子類(lèi)中重寫(xiě)方法不能拋出新的異常方法重寫(xiě)舉例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)子類(lèi)對(duì)象引用轉(zhuǎn)成父類(lèi)對(duì)象引用從extends到超集(子類(lèi)是父類(lèi)的超集)可以創(chuàng)建不同類(lèi)型對(duì)象的數(shù)組下溯造型(downcasting)父類(lèi)對(duì)象引用轉(zhuǎn)成子類(lèi)對(duì)象引用強(qiáng)制類(lèi)型轉(zhuǎn)換55Java高級(jí)特性static關(guān)鍵字final關(guān)鍵字抽象類(lèi)介面包訪(fǎng)問(wèn)控制內(nèi)部類(lèi)其他類(lèi)56static關(guān)鍵字static含義:靜態(tài)的、作用域:所屬類(lèi)類(lèi)變數(shù)/靜態(tài)變數(shù)所屬類(lèi)的所有實(shí)例變數(shù)中都可以訪(fǎng)問(wèn)private類(lèi)方法/靜態(tài)方法57靜態(tài)初始化程式語(yǔ)法static{
… }[舉例]P118
例5-358final關(guān)鍵字作用範(fàn)圍類(lèi)的聲明:不能再派生子類(lèi)成員方法:不能被重寫(xiě)成員變數(shù):常量[舉例]P119
例5-459抽象類(lèi)概念包含一個(gè)或多個(gè)抽象方法只有聲明,沒(méi)有方法體稱(chēng)為抽象方法特點(diǎn)abstract修飾除了沒(méi)有方法體,其他和class一樣不能創(chuàng)建抽象類(lèi)實(shí)例抽象類(lèi)的子類(lèi)可以創(chuàng)建實(shí)例(非抽象方法)抽象類(lèi)的含義P121
圖5-160關(guān)於樹(shù)狀結(jié)構(gòu)不足之處的例子介面的引出-161卡車(chē)、輪船、噴氣機(jī)這些子類(lèi)都以汽油為動(dòng)力燃料所以具有一些相同的屬性和方法,如每公里耗油量、剩餘油量、加油操作、獲取剩餘油量等為使程式簡(jiǎn)潔,可把這些公共屬性和方法放在父類(lèi)交通工具中,然後由子類(lèi)、子類(lèi)的子類(lèi)繼承但必將產(chǎn)生一個(gè)問(wèn)題:自行車(chē)等非燃油交通工具子類(lèi)也繼承了這些屬性和方法,這很不合理另外,子類(lèi)層次越下,繼承的無(wú)效的方法越多,難以管理和掌握介面的引出-262解決方法把用於完成特定功能的若干屬性和方法組織成相對(duì)獨(dú)立的集合,凡是需要實(shí)現(xiàn)這種特定功能的類(lèi),都可以繼承該集合,並在類(lèi)內(nèi)使用它。上述集合就是介面。在上面的例子中,可以定義一個(gè)用來(lái)完成燃油功能的介面“可燃油的”包含相關(guān)屬性功能,卡車(chē)、輪船、噴氣機(jī)這些類(lèi)均可以通過(guò)實(shí)現(xiàn)該介面來(lái)?yè)碛腥加凸δ堋=槊娴囊?363介面的引出-464介面概念聲明方法,不定義方法體一組對(duì)外的公共介面語(yǔ)法[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介面與抽象類(lèi)介面與抽象類(lèi)的所有方法都是抽象的,但抽象類(lèi)有空方法體一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)介面,而只能繼承一個(gè)抽象父類(lèi)介面不構(gòu)成類(lèi)的繼承體系,因此條件比較寬鬆;抽象類(lèi)一般位於類(lèi)的頂層一般使用介面;需要成員變數(shù)和完整方法定義時(shí),使用抽象類(lèi)66包(package)OOP的封裝思想:將相關(guān)功能的介面和類(lèi)放到同一目錄中,同時(shí)避免命名衝突和限定類(lèi)的訪(fǎng)問(wèn)許可權(quán)獨(dú)立命名空間相關(guān)類(lèi)與介面的集合優(yōu)點(diǎn)容易根據(jù)所需功能找到相關(guān)類(lèi)每個(gè)包創(chuàng)建新的命名空間,不同包相同名允許同一個(gè)包中的類(lèi)之間有寬鬆的訪(fǎng)問(wèn)控制67包的定義和使用包的定義packagepkg1[.pkg2[.pkg3…]]定義類(lèi)屬於哪個(gè)包除去空格和注釋?zhuān)亩x在最前方包名間以“.”分隔默認(rèn):package.//屬於當(dāng)前目錄,默認(rèn)不寫(xiě)包成員的使用引入(import)包成員或整個(gè)包,使用短名使用長(zhǎng)名(包名.介面名或類(lèi)名)[舉例]P131
例5-668packagemyclass.graphics;
這條語(yǔ)句指定這個(gè)包中的檔存儲(chǔ)在目錄path/myclass/graphics下。包層次的根目錄path是由環(huán)境變數(shù)CLASSPATH來(lái)確定的。packagemyclass.graphics;classSquare{…;}classCircle{…;}classTriangle{…;}myclasspathSquareUsingpackage-169如果在程式Test.java中已定義了包p1,編譯時(shí)採(cǎi)用如下方式:javac-ddestpathTest.java
則編譯器會(huì)自動(dòng)在destpath目錄下建立一個(gè)子目錄p1,並將生成的.class檔都放到destpath/p1下。
destpath可以是環(huán)境變數(shù)CLASSPATH中的一個(gè)。Usingpackage-270Usingpackage-3為了方便編程和管理,通常把需要在一起工作的類(lèi)放在一個(gè)包,類(lèi)似於檔夾的組織檔的模式。通常一個(gè)類(lèi)只能引用與它在同一個(gè)包中的類(lèi)。若需要使用其他包中的類(lèi),用import語(yǔ)句引入整個(gè)包或所需要的類(lèi)。
importpackage1[.package2…].(classname|*);
例如:
importmyclass.graphics.*;
importjava.io.File;也可以直接在類(lèi)的前面添加完整的包名作為首碼。例如,定義一個(gè)日期對(duì)象:
java.util.Datethedate=newDate(2003,10,1);不推薦使用這種辦法。71Howtouseclasspath為了讓程式找到定義的package,需要:程式或者在定義的package上面的目錄下執(zhí)行,或者把classpath設(shè)置為包含有指向定義的package的路徑。classpath的確切效果和設(shè)置一直在隨java的修訂而變化,所以使用時(shí)最好參考sun的最新說(shuō)明。<舉例>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();}}為了使本包中的類(lèi)可以被其他包中的類(lèi)所訪(fǎng)問(wèn),需要:把本包中的類(lèi)聲明為public,且這個(gè)類(lèi)的構(gòu)造函數(shù)也是public的。如果要訪(fǎng)問(wèn)本包中類(lèi)的方法,那麼這個(gè)方法也需要聲明是public的或者使用包的全名訪(fǎng)問(wèn)使用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包的訪(fǎng)問(wèn)控制成員變數(shù)、成員方法、內(nèi)部類(lèi)private—私有的protected—受保護(hù)的default—默認(rèn)的public—公開(kāi)的類(lèi)publicdefault舉例77內(nèi)部類(lèi)什麼是內(nèi)部類(lèi)內(nèi)部類(lèi)的使用訪(fǎng)問(wèn)外包類(lèi)所有成員外包類(lèi)語(yǔ)句塊中定義內(nèi)部類(lèi)外包類(lèi)外其他類(lèi)訪(fǎng)問(wèn)內(nèi)部類(lèi)內(nèi)部類(lèi)的特性78內(nèi)部類(lèi)的特性?xún)?nèi)部類(lèi)的類(lèi)名只用於定義它的類(lèi)或語(yǔ)句塊內(nèi),在外部引用它時(shí)必須給出帶有外包類(lèi)名的完整名稱(chēng),並且內(nèi)部類(lèi)的名字不允許與外包類(lèi)名字相同內(nèi)部類(lèi)可以訪(fǎng)問(wèn)外包類(lèi)的靜態(tài)(static)或?qū)嵗蓡T變數(shù)內(nèi)部類(lèi)可以在成員方法中定義,該成員方法的局部變數(shù)及參數(shù)必須是final的才能被該內(nèi)部使用內(nèi)部類(lèi)可以是抽象類(lèi)或介面。如果是介面,則可以由其他內(nèi)部類(lèi)實(shí)現(xiàn)內(nèi)部類(lèi)可以使用public、protected、default或private等四種訪(fǎng)問(wèn)許可權(quán)控制內(nèi)部類(lèi)可以被聲明為static(普通類(lèi)不可),這樣的內(nèi)部類(lèi)變成頂層類(lèi),相當(dāng)於把它放在外面,不再是嵌套的內(nèi)部類(lèi),且不包含指向外包類(lèi)的指針只有頂層可以聲明static成員,若內(nèi)部類(lèi)需定義static成員,須先將內(nèi)部類(lèi)聲明為static79包裝類(lèi)BooleanByteCharacterShortIntegerLongFloatDouble80集合類(lèi)Collection:集合介面樹(shù)的根Set:不能包含重複的元素SortedSetList:有序的集合Map:實(shí)現(xiàn)鍵值到值的映射(不能重複)SortedMap81實(shí)現(xiàn)Set介面的類(lèi)HashSet對(duì)象中的元素存儲(chǔ)在Hash表中,存取效率高TreeSet實(shí)現(xiàn)SortedSet的介面,有序(昇冪)樹(shù)結(jié)構(gòu)存儲(chǔ)LinkedHashSet採(cǎi)用鏈表和Hash表相結(jié)合的結(jié)構(gòu)存儲(chǔ)[舉例]P146
例5-1282List介面特有屬性按位置存取元素查找遍曆建立List視圖舉例83異常處理異常的概念異常處理方法自定義異常類(lèi)84異常的概念概念:在程式運(yùn)行時(shí)打斷正常程式流程的任何不正常的情況稱(chēng)為錯(cuò)誤或異常出現(xiàn)異常試圖打開(kāi)的檔不存在網(wǎng)路連接中斷操作符越界加載的類(lèi)找不到[舉例]P155
例6-185異常類(lèi)層次P156Error與Exception不可恢復(fù)與可恢復(fù)不可處理與可處理86異常處理方法捕獲並處理異常好像traptry-catch-finally將方法產(chǎn)生的異常拋出好像transfermethodDeclarationthrowsException87捕獲並處理異常try-catch-finally語(yǔ)句try{ javastatements; }catch(Exception1e){ javastatements; }catch(Exceptione){ javastatements; }finally{…}通用異常處理Exceptione;…;e.getMessage();[舉例]P159
例6-288將方法中產(chǎn)生的異常拋出聲明異常returnTypemethodName([paramList])throwsexceptionListexceptionList可包含多個(gè)異常類(lèi)型,用逗號(hào)隔開(kāi)適用場(chǎng)合方法中調(diào)用了拋出異常的方法方法體中生成並拋出異常對(duì)象P163[舉例]P163
例6-589Applet基礎(chǔ)與高級(jí)編程Applet基本概念A(yù)pplet的編寫(xiě)Applet中的圖形化用戶(hù)介面GUIApplet的多媒體支持Applet的安全控制Applet與外界的通信Applet與Application90Applet基本概念什麼是Applet小應(yīng)用程式:web上的java依靠web流覽器或javaappletviewer運(yùn)行Applet開(kāi)發(fā)過(guò)程編寫(xiě)Applet原始檔案並編譯編寫(xiě)插入Applet的HTML原始檔案輸入:appletviewerxxx.html或雙擊xxx.html[舉例]
Chap06_1.java,applet.htmlApplet的運(yùn)行過(guò)程流覽器加載指定URL的HTML檔流覽器解析HTML檔流覽器加載HTML檔中指定URL的Applet類(lèi)流覽器中的Java運(yùn)行環(huán)境運(yùn)行該Applet類(lèi)91Applet的類(lèi)層次結(jié)構(gòu)每一個(gè)Applet都繼承自java.applet.Applet類(lèi),並且每個(gè)Applet都有一個(gè)主程序類(lèi),之前必須加上public92Applet的生命週期-1生命週期:加載->創(chuàng)建->運(yùn)行->消亡initstartstopdestroy裝載Applet時(shí)調(diào)用,初始化操作初始化後,訪(fǎng)問(wèn)時(shí)調(diào)用Applet停止時(shí)調(diào)用,一般發(fā)生在頁(yè)面重定向或關(guān)閉前在流覽器完全關(guān)閉之前調(diào)用重新裝入或改變流覽器大小或返回web頁(yè)面93Applet的生命週期-2Applet中沒(méi)有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)的線(xiàn)程來(lái)執(zhí)行任務(wù)。stop()方法:離開(kāi)Applet所在頁(yè)面時(shí)調(diào)用,以停止消耗系統(tǒng)資源。destroy()方法:流覽器關(guān)閉時(shí)自動(dòng)調(diào)用,以清除Applet所用的所有資源。94Applet的生命週期-3除了四個(gè)Applet生命週期控制的方法外,Applet類(lèi)還提供了一些其他有用的方法:
publicAppletContext
getAppletContext()返回AppletContext實(shí)例
publicString
getAppletInfo()報(bào)告關(guān)於Applet的作者、版權(quán)、版號(hào)等資訊
publicURL
getDocumentBase()返回包含Applet的HTML檔的URLpublicURL
getCodeBase()
返回Applet主類(lèi)的URLpublicString
getParameter(String
name)
返回定義在HTML檔的</PARAM>標(biāo)記中指定參數(shù)的值,如果參數(shù)不存在,返回null95Applet的顯示-1AWTThreadrepaintupdatepaint程式調(diào)用初次顯示、遮蓋、調(diào)整大小、最大化、最小化等96Applet的顯示-2paint()Update()Repaint()Graphics類(lèi):相當(dāng)於畫(huà)筆drawLine()drawRect();fillRect()draw3Drect();fill3Drect()drawRoundRect();fillRoundRect()drawOval();fillOval()drawArc();fillArc()drawPolygon();drawPolyline();fill
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代環(huán)保材料在建筑領(lǐng)域的應(yīng)用前景
- 現(xiàn)代交通工具設(shè)計(jì)中傳統(tǒng)文化的融入方式
- 基坑安全專(zhuān)項(xiàng)方案
- 現(xiàn)代東方風(fēng)洗浴中心的節(jié)能環(huán)保裝修方案
- 2024年春九年級(jí)化學(xué)下冊(cè) 第9單元 溶液 實(shí)驗(yàn)活動(dòng)5 一定溶質(zhì)質(zhì)量分?jǐn)?shù)的氯化鈉溶液的配制說(shuō)課稿 (新版)新人教版
- 2023三年級(jí)英語(yǔ)下冊(cè) Unit 1 Animals on the farm Lesson 3 Fish and Birds說(shuō)課稿 冀教版(三起)
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 一 加與減第1課時(shí) 誰(shuí)的得分高配套說(shuō)課稿 北師大版
- 2025蓄電池產(chǎn)品及零部件檢驗(yàn)合同書(shū)
- 《5 奇形怪狀的熱帶魚(yú)(圖形工具)》說(shuō)課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)一年級(jí)上冊(cè)
- 2024秋五年級(jí)英語(yǔ)上冊(cè) Module 2 Unit 1 What did you buy說(shuō)課稿 外研版(三起)
- 偏癱足內(nèi)翻的治療
- 蘭溪市排水防澇提升雨污管網(wǎng)修復(fù)改造初步設(shè)計(jì)文本
- 藥企質(zhì)量主管競(jìng)聘
- 信息對(duì)抗與認(rèn)知戰(zhàn)研究-洞察分析
- 2024-2025學(xué)年人教版八年級(jí)上冊(cè)地理期末測(cè)試卷(一)(含答案)
- GB/T 44546-2024建筑用裝配式集成吊頂通用技術(shù)要求
- 心腦血管疾病預(yù)防課件
- 中央2025年中國(guó)農(nóng)業(yè)銀行研發(fā)中心校園招聘344人筆試歷年參考題庫(kù)解題思路附帶答案詳解
- 手術(shù)室專(zhuān)科護(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽(tīng)力技巧指導(dǎo)-預(yù)讀、預(yù)測(cè)
- 蘇州市2025屆高三期初陽(yáng)光調(diào)研(零模)政治試卷(含答案)
評(píng)論
0/150
提交評(píng)論