Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)課件_第1頁(yè)
Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)課件_第2頁(yè)
Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)課件_第3頁(yè)
Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)課件_第4頁(yè)
Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)課件_第5頁(yè)
已閱讀5頁(yè),還剩431頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java程式設(shè)計(jì)與應(yīng)用開(kāi)發(fā)第一章快速入門(mén)

1.1Java簡(jiǎn)介1.1.1發(fā)展簡(jiǎn)史1.1.2Java的特點(diǎn)1.2Java開(kāi)發(fā)環(huán)境的構(gòu)建

1.2.1Java開(kāi)發(fā)包的安裝1.2.2環(huán)境變數(shù)設(shè)定1.2.3基本DOS命令基本要求Java開(kāi)發(fā)包+純文本編輯器

Java開(kāi)發(fā)包:JDK寫(xiě)字板、UltraEdit等TextPad、JCreator、JBuiler、VisualAge、Eclipse等1.2.1Java開(kāi)發(fā)包的安裝Step1:從獲取免費(fèi)的Java開(kāi)發(fā)包安裝程式

Step2:雙擊Java開(kāi)發(fā)包安裝程式,出現(xiàn)安裝介面

Java開(kāi)發(fā)包的安裝-1Step3:隨後,安裝程式會(huì)彈出許可證協(xié)議閱讀畫(huà)面

Java開(kāi)發(fā)包的安裝-2Step4:選擇接受協(xié)議條款,然後點(diǎn)擊“下一步”按鈕,出現(xiàn)安裝類(lèi)型選擇畫(huà)面Java開(kāi)發(fā)包的安裝-3Step5:點(diǎn)擊選中自定義,然後點(diǎn)擊“下一步”按鈕,出現(xiàn)下圖所示的自定義安裝內(nèi)容選擇畫(huà)面Java開(kāi)發(fā)包的安裝-4Step6:點(diǎn)擊“下一步”按鈕進(jìn)入正式安裝。其他版本的開(kāi)發(fā)包安裝過(guò)程中除了顯示畫(huà)面略有不同,其他方面類(lèi)似

1.2.2環(huán)境變數(shù)設(shè)定PATH-路徑環(huán)境變數(shù),用來(lái)指定Java開(kāi)發(fā)包中的一些可執(zhí)行程式(如java.exe、javac.exe等)所在的位置。

CLASSPATH-類(lèi)路徑環(huán)境變數(shù),參見(jiàn)第四章。PATH設(shè)定之一(Win2K/NT/XP)(1)右擊“我的電腦”,在彈出菜單中選擇“屬性”,出現(xiàn)系統(tǒng)屬性對(duì)話框,

(2)選擇“高級(jí)”屬性頁(yè),在該屬性頁(yè)面中有一個(gè)“環(huán)境變數(shù)”按鈕,點(diǎn)擊該按鈕進(jìn)入環(huán)境變數(shù)編輯窗口

(3)在系統(tǒng)變數(shù)區(qū)域找到變數(shù)Path,雙擊該行就可以編輯該環(huán)境變數(shù)的值。在該變數(shù)已有的值後追加

“;c:\jdk1.4\bin”(注意:不包括引號(hào),分號(hào)不能缺少,c:\jdk1.4是開(kāi)發(fā)包的安裝路徑,如果安裝到其他路徑,需作相應(yīng)修改),點(diǎn)擊“確定”按鈕進(jìn)行保存工作。至此,完成了Path環(huán)境變數(shù)的設(shè)定工作。所追加的值是用來(lái)指定Java開(kāi)發(fā)包中的一些可執(zhí)行程式(如編譯、解釋以及調(diào)試等可執(zhí)行的工具程式)所在的位置的。

1.2.3基本DOS命令

如何進(jìn)入DOS控制臺(tái)窗口?這裏以Window200為例,點(diǎn)擊“開(kāi)始”→“運(yùn)行”,在彈出的對(duì)話框中輸入“CMD”,點(diǎn)擊“確定”,即可進(jìn)入DOS控制臺(tái)窗口。需要注意的,這種方式進(jìn)入DOS控制臺(tái)窗口後,當(dāng)前目錄為系統(tǒng)缺省目錄,如果你想轉(zhuǎn)換到其他盤(pán)符,例如D:,可以在提示符後輸入“D:”,然後回車(chē)就轉(zhuǎn)換到D:盤(pán)了。

DOS命令簡(jiǎn)介DIR[功能]顯示目錄中的檔以及子目錄。CLS

[功能]清除螢?zāi)籇EL

[功能]刪除一個(gè)或是多個(gè)檔。MD[功能]創(chuàng)建目錄。COPY[功能]檔複製,將一份或多份檔複製到另一個(gè)位置。HELP[功能]幫助EXIT[功能]退出DOS窗口。1.3Java應(yīng)用程式

(1)編寫(xiě)源代碼

代碼輸入完畢後,將其保存成一個(gè)檔,取名為HelloWorld.java。並存放到一個(gè)指定的目錄中去

(如F:\Chapter01\code)。

觀察可以發(fā)現(xiàn)目錄F:\Chapter01\code中有一個(gè)檔,名字為HelloWorld.java,這就是我們剛才保存的源代碼檔

編寫(xiě)源代碼注意事項(xiàng)由於Java編譯器和解釋器對(duì)於代碼中的字元是大小寫(xiě)敏感的,所以您在按照本書(shū)內(nèi)容輸入代碼、命令以及檔案名時(shí),注意大小寫(xiě)是否正確。該檔案名必須是HelloWorld(和公開(kāi)類(lèi)的類(lèi)名相同,並且大小寫(xiě)也要一樣,這是由Java編譯器和解釋器是大小寫(xiě)敏感而決定的),並且擴(kuò)展名一定是.java。1.3.2編譯源代碼

在命令提示行輸入以下命令並回車(chē):

javacHelloWorld.java觀察如果螢?zāi)簧蠜](méi)有出現(xiàn)錯(cuò)誤提示,則表示已經(jīng)正常完成了編譯工作。再次使用DIR命令,可以發(fā)現(xiàn)目錄下多了一個(gè)檔HelloWorld.class,即編譯好的中間位元組代碼(bytecode)檔

1.3.3運(yùn)行程式

在命令提示行輸入:

javaHelloWorld1.3.4常見(jiàn)問(wèn)題解答

Windows系統(tǒng)對(duì)於DOS命令中字元的大小寫(xiě)是不敏感的。例如:輸入DIR、dir或是Dir得到的結(jié)果是相同的。Java編譯器和解釋器對(duì)於代碼中的字元是大小寫(xiě)敏感的。所以在輸入代碼時(shí)要特別注意字元的大小寫(xiě),例如HelloWorld和helloWorld是不同的,同樣public和Public也是不同的。

常見(jiàn)問(wèn)題-續(xù)1保存源代碼為檔時(shí),要注意檔的命名。檔案名一定要和源代碼中公開(kāi)類(lèi)的類(lèi)名一致(包括大小寫(xiě)),並且檔擴(kuò)展名必須為.java。注意,如果將例1.3.1中的publicclassHelloWorld改為classHelloWorld(即HelloWorld不再是公開(kāi)類(lèi)),則可以將其保存為任何一個(gè)合法的、並以.java為擴(kuò)展名的檔,例如NotHelloWorld.java。

常見(jiàn)問(wèn)題-續(xù)2如果在進(jìn)行編譯時(shí)報(bào)類(lèi)似如下錯(cuò)誤(如果讀者使用的是英文版的操作系統(tǒng),錯(cuò)誤資訊將是英文):

'javac'不是內(nèi)部或外部命令,也不是可運(yùn)行的程式或批處理檔。

則表示系統(tǒng)不能正確定位編譯器javac.exe,原因是未能正確設(shè)定PATH環(huán)境變數(shù)。請(qǐng)參考1.2.2小節(jié)關(guān)於環(huán)境變數(shù)的設(shè)置。

常見(jiàn)問(wèn)題-續(xù)3編譯時(shí),需要用檔的全名,例如javacHelloWorld.java;解釋運(yùn)行時(shí)只需要用類(lèi)名,而不需要帶上.class,例如javaHelloWorld。如果輸入:

javaHelloWorld.class

那麼系統(tǒng)報(bào)如下錯(cuò)誤:

Exceptioninthread"main"java.lang.NoClassDefFoundError:HelloWorld/class

1.3.5理解例子

Java代碼中具有三種類(lèi)型的注釋?zhuān)?/p>

(1)單行注釋

//comments

從//至該行結(jié)束的內(nèi)容是注釋部分,編譯器予以忽略。

(2)多行注釋

/*comments*/

在/*和*/之間的所有內(nèi)容均為注釋部分,位於/*和*/之間的內(nèi)容可以是一行或是多行。(3)文檔注釋

/**commentsline1*commentsline2*...*commentslinen*/類(lèi)定義&main方法publicclassHelloWorld{...}

publicstaticvoidmain(String[]args){...}命令行參數(shù)&輸出語(yǔ)句publicstaticvoidmain(String[]args)System.out.println(Strings)1.4JavaAppletApplet稱(chēng)為小應(yīng)用程式,和應(yīng)用程式不同的是,Applet一般是在支持Java的Web流覽器中運(yùn)行。使用特定的HTML標(biāo)籤(tag)將Applet嵌入在HTML頁(yè)面中,並且Applet程式和頁(yè)面均存放在伺服器上,當(dāng)遠(yuǎn)程用戶(hù)通過(guò)流覽器來(lái)訪問(wèn)頁(yè)面時(shí),頁(yè)面中所嵌入的Applet程式通過(guò)網(wǎng)路被下載到流覽器中並加以運(yùn)行

1.4.1編寫(xiě)Applet源代碼importjavax.swing.JApplet;//引入JApplet類(lèi)importjavax.swing.JLabel;//引入標(biāo)籤類(lèi)JLabelpublicclassHelloWorldAppletextendsJApplet{publicvoidinit(){System.out.println("initApplet");}publicvoidstart(){System.out.println("startApplet"); getContentPane().add(newJLabel("HelloWorldApplet"));}publicvoidstop(){System.out.println("stopApplet"); }publicvoiddestroy(){System.out.println("destoryApplet"); }}四個(gè)方法init()

-打開(kāi)嵌有Applet的HTML頁(yè)面時(shí),該方法被調(diào)用以進(jìn)行必要的初始化工作。start()

-該方法在init方法結(jié)束後被調(diào)用,用以啟動(dòng)Applet。stop()

-關(guān)閉嵌有Applet的HTML頁(yè)面時(shí),該方法自動(dòng)調(diào)用,以關(guān)閉Applet。destroy()

stop方法執(zhí)行完畢後,該方法被調(diào)用,用以釋放Applet所使用的資源。

1.4.2編寫(xiě)嵌入Applet的HTML檔

例1.4.2HelloWorldApplet.html<html><title>ASimpleAppletExample</title><body>Thisisasimpleapplet.<p><appletcode="HelloWorldApplet.class“width="150"height="150"></applet></body></html>1.4.3運(yùn)行Applet運(yùn)行應(yīng)用程式使用的是java解釋器。而運(yùn)行小應(yīng)用程式則使用Applet查看器或是WEB流覽器。使用appletviewer

在DOS命令行輸入如下命令並回車(chē):

appletviewerHelloWorldApplet.html2.1基本數(shù)據(jù)類(lèi)型

2.1.1識(shí)別字和保留字1、識(shí)別字

程式員對(duì)程式中的各個(gè)元素加以命名時(shí)使用的命名記號(hào)稱(chēng)為識(shí)別字(identifier)。

識(shí)別字可由順序任意的大小寫(xiě)字母,數(shù)字,下劃線(_),美元符($)組成。但識(shí)別字不能以數(shù)字開(kāi)頭,不能是Java中的保留關(guān)鍵字。

例:userName,User_Name,_sys_val,$num為合法的識(shí)別字;

2mailroom#,classhello-world為非法的識(shí)別字

2、保留字具有專(zhuān)門(mén)的意義和用途,不能當(dāng)作一般的識(shí)別字使用,這些識(shí)別字稱(chēng)為保留字(reservedword),也稱(chēng)為關(guān)鍵字。Java語(yǔ)言中的保留字均用小寫(xiě)字母表示。

2.1.2數(shù)據(jù)類(lèi)型概述1.Java中的數(shù)據(jù)類(lèi)型劃分簡(jiǎn)單數(shù)據(jù)類(lèi)型包括:整數(shù)類(lèi)型:byte,short,int,long浮點(diǎn)類(lèi)型:float,double字元類(lèi)型:char布爾類(lèi)型:boolean複合數(shù)據(jù)類(lèi)型包括:classinterface數(shù)組2、常量和變數(shù)常量:用保留字final來(lái)實(shí)現(xiàn)如:finalintIP=3;變數(shù):intcount;charc=’a';2.1.3簡(jiǎn)單數(shù)據(jù)類(lèi)型1.布爾類(lèi)型—boolean

布爾型數(shù)據(jù)只有兩個(gè)值true和false.

例如:booleanb=true;2.字元類(lèi)型--char字元常量:字元常量是用單引號(hào)括起來(lái)的一個(gè)字元,如'a','A';字元型變數(shù):類(lèi)型為char,它在機(jī)器中占16位,其範(fàn)圍為0~65535。字元型變數(shù)的定義如:charc='a';/*指定變數(shù)c為char型,且賦初值為'a'*/3、整型數(shù)據(jù)整型常量:

十進(jìn)位整數(shù)。如123,-456,0八進(jìn)制整數(shù)。以0開(kāi)頭,如0123表示十進(jìn)位數(shù)83,-011表示十進(jìn)位數(shù)-9。十六進(jìn)制整數(shù)。以0x或0X開(kāi)頭,如0x123表示十進(jìn)位數(shù)291,-0X12表示十進(jìn)位數(shù)-18。整型變數(shù):數(shù)據(jù)類(lèi)型所占位數(shù)數(shù)的範(fàn)圍byte8-27~27-1short16-215~215-1

int32-231~231-1

long64-263~263-14.浮點(diǎn)型(實(shí)型)數(shù)據(jù)實(shí)型常量:十進(jìn)位數(shù)形式。由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn)。如0.123,1.23,123.0

科學(xué)計(jì)數(shù)法形式。如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E後面的指數(shù)必須為整數(shù)。

float型的值,必須在數(shù)字後加f或F。如1.23f。

實(shí)型變數(shù):

5.簡(jiǎn)單數(shù)據(jù)類(lèi)型的例子:

publicclassAssign{publicstaticvoidmain(Stringargs[]){

數(shù)據(jù)類(lèi)型所占位數(shù)數(shù)的範(fàn)圍floatdouble32643.4e-038~3.4e+038

1.7e-038~1.7e+038

intx,y;//定義x,y兩個(gè)整型變數(shù)floatz=1.234f;//指定變數(shù)z為float型,且賦初值為1.234doublew=1.234;//指定變數(shù)w為double型,且賦初值為1.234booleanflag=true;//指定變數(shù)flag為boolean型,且賦初值為truecharc;//定義字元型變數(shù)c

Stringstr;//定義字串變數(shù)strStringstr1="Hi";//指定變數(shù)str1為String型,且賦初值為Hic='A';//給字元型變數(shù)c賦值'A'str="bye";//給字串變數(shù)str賦值"bye"x=12;//給整型變數(shù)x賦值為12y=300;//給整型變數(shù)y賦值為300

}

}2.1.4簡(jiǎn)單數(shù)據(jù)類(lèi)型中各類(lèi)型數(shù)據(jù)間的優(yōu)先關(guān)係和相互轉(zhuǎn)換1、不同類(lèi)型數(shù)據(jù)間的優(yōu)先關(guān)係如下:低--------------------------------------------->高

byte,short,char->int->long->float->double2、自動(dòng)類(lèi)型轉(zhuǎn)換規(guī)則整型,實(shí)型,字元型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類(lèi)型的數(shù)據(jù)先轉(zhuǎn)化為同一類(lèi)型,然後進(jìn)行運(yùn)算,轉(zhuǎn)換從低級(jí)到高級(jí);3、強(qiáng)制類(lèi)型轉(zhuǎn)換高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需用到強(qiáng)制類(lèi)型轉(zhuǎn)換,如:

inti;byteb=(byte)i;/*把int型變數(shù)i強(qiáng)制轉(zhuǎn)換為byte型*/2.2運(yùn)算符和運(yùn)算式

2.2.1運(yùn)算符參與運(yùn)算的數(shù)據(jù)稱(chēng)為運(yùn)算元,按運(yùn)算元的數(shù)目來(lái)分,可有:一元運(yùn)算符:++,--,+,-二元運(yùn)算符:+,-,>三元運(yùn)算符:?:基本的運(yùn)算符按功能劃分,有下麵幾類(lèi):1、算術(shù)運(yùn)算符:+,―,*,/,%,++,――。例:3+2;a-b;i++;--i;2、關(guān)係運(yùn)算符:>,<,>=,<=,==,!=。例:count>3;I==0;n!=-1;3、布爾邏輯運(yùn)算符:!,&&,||。例:flag=true;!(flag);flag&&false;

4、位運(yùn)算符:>>,<<,>>>,&,|,^,~。例:a=10011101;b=00111001;則有如下結(jié)果:

a<<3=11101000;a>>3=11110011a>>>3=00010011;a&b=00011001;a|b=10111101;

~a=01100010;a^b=10100100;5、賦值運(yùn)算符=,及其擴(kuò)展賦值運(yùn)算符如+=,―=,*=,/=等。例:i=3;i+=3;//等效於i=i+3;6、條件運(yùn)算符?:例:result=(sum==0?1:num/sum);7、其他:包括分量運(yùn)算符·,下標(biāo)運(yùn)算符[],實(shí)例運(yùn)算符instanceof,記憶體分配運(yùn)算符new,強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符(類(lèi)型),方法調(diào)用運(yùn)算符()等。例:

System.out.println("helloworld");intarray1[]=newint[4];2.2.2運(yùn)算式運(yùn)算式是由運(yùn)算元和運(yùn)算符按一定的語(yǔ)法形式組成的符號(hào)序列

1、運(yùn)算式的類(lèi)型運(yùn)算式的類(lèi)型由運(yùn)算以及參與運(yùn)算的運(yùn)算元的類(lèi)型決定,可以是簡(jiǎn)單類(lèi)型,也可以是複合類(lèi)型:布爾型運(yùn)算式:x&&y||z;整型運(yùn)算式:num1+num2;

2、運(yùn)算符的優(yōu)先次序運(yùn)算式的運(yùn)算按照運(yùn)算符的優(yōu)先順序從高到低進(jìn)行,同級(jí)運(yùn)算符從左到右進(jìn)行。

2.3字串

2.3.1字串的表示字串常量字串常量是用雙引號(hào)括住的一串字元。如:"HelloWorld!"

String類(lèi)的構(gòu)造方法

String(charchars[]);

String(charchars[],intstartIndex,intnumChars);String(byteascii[],inthiByte);String(byteascii[],inthiByte,intstartIndex,intnumChars);String使用示例:Strings=newString();//生成一個(gè)空串

用StringBuffer表示字串

StringBuffer();/*分配16個(gè)字元的緩衝區(qū)*/StringBuffer(intlen);/*分配len個(gè)字元的緩衝區(qū)*/StringBuffer(Strings);/*除了按照s的大小分配空間外,再分配16個(gè)字元的緩衝區(qū)*/2.3.2訪問(wèn)字串1、類(lèi)String中提供了length()、charAt()、indexOf()、lastIndexOf()、getChars()、getBytes()、toCharArray()等方法。2、類(lèi)StringBuffer提供了length()、charAt()、getChars()、capacity()等方法。2.3.3修改字串1、String類(lèi)提供的方法:2、StringBuffer類(lèi)提供的方法:StringBuffer中對(duì)字串的連接操作是對(duì)源串本身進(jìn)行的,操作之後源串的值發(fā)生了變化,變成連接後的串。2.3.4其他操作1、字串的比較String中提供的方法:equals()和equalsIgnoreCase()

2、字串的轉(zhuǎn)化

java.lang.Object中提供了方法toString()把對(duì)象轉(zhuǎn)化為字串。3、字串"+"操作運(yùn)算符'+'可用來(lái)實(shí)現(xiàn)字串的連接:

Strings="Heis"+age+"yearsold";

其他類(lèi)型的數(shù)據(jù)與字串進(jìn)行"+"運(yùn)算時(shí),將自動(dòng)轉(zhuǎn)換成字串。具體過(guò)程如下:

Strings=newStringBuffer("heis").append(age).append("yearsold").toString();2.4控制語(yǔ)句

2.4.1分支語(yǔ)句分支語(yǔ)句提供了一種控制機(jī)制,使得程式的執(zhí)行可以跳過(guò)某些語(yǔ)句不執(zhí)行,而轉(zhuǎn)去執(zhí)行特定的語(yǔ)句。1、條件語(yǔ)句if-elseif(boolean-expression)statement1;[elsestatement2;]

2、多分支語(yǔ)句switchswitch(expression){casevalue1:statement1;break;

casevalue2:statement2;break;

…………

casevalueN:statemendN;break;

[default:defaultStatement;]

}2.4.2迴圈語(yǔ)1、while語(yǔ)句

[initialization]

while(termination){

body;

[iteration;]

}2、do-while語(yǔ)句

[initialization]

do{

body;

[iteration;]

}while(termination);3.for語(yǔ)句

for(initialization;termination;iteration){

body;

}2.4.3跳轉(zhuǎn)語(yǔ)句

1、break語(yǔ)句

在switch語(yǔ)中,break語(yǔ)句用來(lái)終止switch語(yǔ)句的執(zhí)行。使程式從switch語(yǔ)句後的第一個(gè)語(yǔ)句開(kāi)始執(zhí)行。在Java中,可以為每個(gè)代碼塊加一個(gè)括弧,一個(gè)代碼塊通常是用大括弧{}括起來(lái)的一段代碼。2、continue語(yǔ)句

continue語(yǔ)句用來(lái)結(jié)束本次迴圈,跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行終止條件的判斷,以決定是否繼續(xù)迴圈。如:continue;

可以用continue跳轉(zhuǎn)到括弧指明的外層迴圈中。如:continueouterLable;3、返回語(yǔ)句returnreturn語(yǔ)句從當(dāng)前方法中退出,返回到調(diào)用該方法的語(yǔ)句處。return語(yǔ)句通常用在一個(gè)方法體的最後,否則會(huì)產(chǎn)生編譯錯(cuò)誤,除非用在if-else語(yǔ)句中

2.5數(shù)組

2.5.1一維數(shù)組的定義1.一維數(shù)組的定義

typearrayName[];類(lèi)型(type)可以為Java中任意的數(shù)據(jù)型,包括簡(jiǎn)單類(lèi)型和複合類(lèi)型。例:intintArray[];DatedateArray[];2、一維數(shù)組的初始化靜態(tài)初始化

intintArray[]={1,2,3,4};

StringstringArray[]={"abc","How","you"};動(dòng)態(tài)初始化

1)簡(jiǎn)單類(lèi)型的數(shù)組

intintArray[];intArray=newint[5];

2)複合類(lèi)型的數(shù)組

StringstringArray[];StringstringArray=newString[3];/*為數(shù)組中每個(gè)元素開(kāi)闢引用空間(32位)*/stringArray[0]=newString("How");//為第一個(gè)數(shù)組元素開(kāi)闢空間

stringArray[1]=newString("are");//為第二個(gè)數(shù)組元素開(kāi)闢空間

stringArray[2]=newString("you");//為第三個(gè)數(shù)組元素開(kāi)闢空間3、一維數(shù)組元素的引用

數(shù)組元素的引用方式為:

arrayName[index]

index為數(shù)組下標(biāo),它可以為整型常數(shù)或運(yùn)算式,下標(biāo)從0開(kāi)始。每個(gè)數(shù)組都有一個(gè)屬性length指明它的長(zhǎng)度,例如:intArray.length指明數(shù)組intArray的長(zhǎng)度。2.5.2多維數(shù)組1、二維數(shù)組的定義

typearrayName[][];type[][]arrayName;2、二維數(shù)組的初始化靜態(tài)初始化

intintArray[][]={{1,2},{2,3},{3,4,5}};

動(dòng)態(tài)初始化

inta[][]=newint[2][3];例:inta[][]=newint[2][];

a[0]=newint[3];

a[1]=newint[5];

對(duì)二維複合數(shù)據(jù)類(lèi)型的數(shù)組,必須首先為最高維分配引用空間,然後再順次為低維分配空間。而且,必須為每個(gè)數(shù)組元素單獨(dú)分配空間。3、二維數(shù)組元素的引用對(duì)二維數(shù)組中的每個(gè)元素,引用方式為:arrayName[index1][index2]

例如:num[1][0];4、二維數(shù)組舉例:

小結(jié)

這一章零碎的知識(shí)點(diǎn)很多,要求要記憶的東西也很多,需要大家整理自己的知識(shí)體系。如果你在此之前學(xué)過(guò)其他的電腦語(yǔ)言,那你就會(huì)感到很輕鬆,其實(shí)對(duì)於學(xué)習(xí)者,與其他的電腦語(yǔ)言相比,java基本語(yǔ)法學(xué)起來(lái)並沒(méi)有什麼不同。只是有些規(guī)則不要混淆就可以了。課後任務(wù)習(xí)題:課後習(xí)題2.12.22.32.5實(shí)驗(yàn)題目:1、編寫(xiě)Java程式,實(shí)現(xiàn)字串的翻轉(zhuǎn)。2、分別用whiledo……whilefor迴圈求解

1)、50!2)、1!+2!+3!+......+10!3.1類(lèi)和對(duì)象3.1.1類(lèi)聲明

class類(lèi)名[extends父類(lèi)名][implements介面列表]{類(lèi)體}3.1.2類(lèi)體類(lèi)中含有兩種成員:成員變數(shù),成員方法。成員變數(shù)成員變數(shù)的聲明方式如下:

[public|protected|private][static]

[final]type變數(shù)名;//成員變數(shù)其中,

static:靜態(tài)變數(shù)(類(lèi)變數(shù));相對(duì)於實(shí)例變數(shù)final:常量

成員方法

方法的實(shí)現(xiàn)包括兩部分內(nèi)容:方法聲明和方法體。

方法聲明中的限定詞的含義:static:類(lèi)方法,可通過(guò)類(lèi)名直接調(diào)用abstract:抽象方法,沒(méi)有方法體final:方法不能被重寫(xiě)方法聲明方法聲明包括方法名、返回類(lèi)型和外部參數(shù)。其中參數(shù)的類(lèi)型可以是簡(jiǎn)單數(shù)據(jù)類(lèi)型,也可以是複合數(shù)據(jù)類(lèi)型。方法體方法體是對(duì)方法的實(shí)現(xiàn),它包括局部變數(shù)的聲明以及所有合法的Java指令。3.1.3關(guān)鍵字this

在一個(gè)方法內(nèi),如果局部變數(shù)和成員變數(shù)的名字相同,則局部變數(shù)被隱藏,若要訪問(wèn)成員變數(shù),要在變數(shù)名前加上”this.,”,this表示當(dāng)前對(duì)象的引用。3.1.4方法重載方法重載是指多個(gè)方法享有相同的名字,但是這些方法的參數(shù)必須不同,或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)類(lèi)型不同。返回類(lèi)型不能用來(lái)區(qū)分重載的方法。3.1.5類(lèi)的繼承通過(guò)繼承實(shí)現(xiàn)代碼複用。Java中所有的類(lèi)都是通過(guò)直接或間接地繼承java.lang.Object類(lèi)得到的。繼承而得到的類(lèi)稱(chēng)為子類(lèi),被繼承的類(lèi)稱(chēng)為父類(lèi)。子類(lèi)不能繼承父類(lèi)中訪問(wèn)許可權(quán)為private的成員變數(shù)和方法。子類(lèi)可以重寫(xiě)父類(lèi)的方法,及命名與父類(lèi)同名的成員變數(shù)。但Java不支持多重繼承,即一個(gè)類(lèi)從多個(gè)超類(lèi)派生的能力。類(lèi)繼承的傳遞性。3.1.6類(lèi)的初始化過(guò)程

當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),對(duì)象的各個(gè)變數(shù)根據(jù)其類(lèi)型被設(shè)置為相應(yīng)的默認(rèn)初始值,然後調(diào)用構(gòu)造方法,而每次調(diào)用構(gòu)造方法都是要執(zhí)行三個(gè)階段:

1、調(diào)用超類(lèi)的構(gòu)造方法;

2、由初始化語(yǔ)句對(duì)給變數(shù)進(jìn)行初始化;

3、執(zhí)行構(gòu)造方法的體。3.1.7原始檔案若原始檔案中不包括public類(lèi)或者介面,檔案名字可以是任意合法的檔案名。

Javac*.java;Javac主方法所在的類(lèi)3.2面向?qū)ο筇匦?.2.1封裝java中類(lèi)的限定詞的作用範(fàn)圍比較同一個(gè)類(lèi)同一個(gè)包不同包的子類(lèi)

不同包非子類(lèi)private*default

**protected***public****3.2.2繼承創(chuàng)建子類(lèi)格式:

classSubClassextendsSuperClass{

}3.2.3多態(tài)在java語(yǔ)言中,多態(tài)性體現(xiàn)在兩個(gè)方面:由方法重載實(shí)現(xiàn)的靜態(tài)多態(tài)性(編譯時(shí)多態(tài))和方法重寫(xiě)實(shí)現(xiàn)的動(dòng)態(tài)多態(tài)性(運(yùn)行時(shí)多態(tài))。

編譯時(shí)多態(tài)在編譯階段,具體調(diào)用哪個(gè)被重載的方法,編譯器會(huì)根據(jù)參數(shù)的不同來(lái)靜態(tài)確定調(diào)用相應(yīng)的方法。運(yùn)行時(shí)多態(tài)由於子類(lèi)繼承了父類(lèi)所有的屬性(私有的除外),所以子類(lèi)對(duì)象可以作為父類(lèi)對(duì)象使用。程式中凡是使用父類(lèi)對(duì)象的地方,都可以用子類(lèi)對(duì)象來(lái)代替。一個(gè)對(duì)象可以通過(guò)引用子類(lèi)的實(shí)例來(lái)調(diào)用子類(lèi)的方法3.3關(guān)鍵字static的使用

如果在聲明時(shí)不用static關(guān)鍵字修飾,則聲明為實(shí)例變數(shù)和實(shí)例方法。實(shí)例變數(shù)和類(lèi)變數(shù)每個(gè)對(duì)象的實(shí)例變數(shù)都分配記憶體,通過(guò)該對(duì)象來(lái)訪問(wèn)這些實(shí)例變數(shù),不同的實(shí)例變數(shù)是不同的。類(lèi)變數(shù)僅在生成第一個(gè)對(duì)象時(shí)分配記憶體,所有實(shí)例對(duì)象共用同一個(gè)類(lèi)變數(shù),每個(gè)實(shí)例對(duì)象對(duì)類(lèi)變數(shù)的改變都會(huì)影響到其他的實(shí)例對(duì)象。類(lèi)變數(shù)可通過(guò)類(lèi)名直接訪問(wèn),也可以通過(guò)實(shí)例對(duì)象訪問(wèn)類(lèi)變數(shù)。實(shí)例方法和類(lèi)方法類(lèi)方法可以由類(lèi)名直接調(diào)用,也可由實(shí)例對(duì)象進(jìn)行調(diào)用。類(lèi)方法中不能使用this或super關(guān)鍵字。

實(shí)例方法類(lèi)方法實(shí)例變數(shù)實(shí)例方法類(lèi)變數(shù)類(lèi)方法可以可以可以可以可以可以不可以不可以實(shí)例方法和類(lèi)方法訪問(wèn)許可權(quán)示意圖3.4關(guān)鍵字final的使用

3.4.1final變數(shù)

final變數(shù),則為常量,例如修飾成員變數(shù)時(shí),定義時(shí)同時(shí)給出初始值,而修飾局部變數(shù)時(shí)不做要求。3.4.2final方法

final修飾的方法不能被子類(lèi)重寫(xiě)。

finalreturnTypemethodName(paramList){

}3.4.3final類(lèi)

final修飾類(lèi),則類(lèi)不能被繼承

finalclass類(lèi)名{

}4.1介面(interface)介面

介面是抽象類(lèi)的一種,只包含常量和方法的定義,而沒(méi)有變數(shù)和方法的實(shí)現(xiàn),且其方法都是抽象方法。它的用處體現(xiàn)在下面幾個(gè)方面:

通過(guò)介面實(shí)現(xiàn)不相關(guān)類(lèi)的相同行為,而無(wú)需考慮這些類(lèi)之間的關(guān)係。

通過(guò)介面指明多個(gè)類(lèi)需要實(shí)現(xiàn)的方法。

通過(guò)介面瞭解對(duì)象的交互介面,而無(wú)需瞭解對(duì)象所對(duì)應(yīng)的類(lèi)。1)介面的定義

介面的定義包括介面聲明和介面體。

介面聲明的格式如下:

[public]interfaceinterfaceName[extendslistOfSuperInterface]{…}

extends子句與類(lèi)聲明的extends子句基本相同,不同的是一個(gè)介面可有多個(gè)父介面,用逗號(hào)隔開(kāi),而一個(gè)類(lèi)只能有一個(gè)父類(lèi)。

介面體包括常量定義和方法定義

常量定義格式為:typeNAME=value;該常量被實(shí)現(xiàn)該介面的多個(gè)類(lèi)共用;具有public,final,static的屬性。在介面中只能聲明常量,不可以聲明變數(shù)。

方法體定義格式為:(具有public和abstract屬性,不能聲明為protected)

returnTypemethodName([paramlist]);

注意:在介面的實(shí)現(xiàn)類(lèi)中,實(shí)現(xiàn)的介面方法必須聲明為public,因?yàn)榻槊嬷卸x的方法為public(默認(rèn))。所以其實(shí)現(xiàn)必須聲明為public.否則編譯不會(huì)通過(guò)。補(bǔ)充由於介面中不能有初始化塊和構(gòu)建器,所以在定義有名常量時(shí)必須包含初始化運(yùn)算式介面中的方法不能被聲明為static,因?yàn)轭?lèi)方法不是抽象的。2)介面的實(shí)現(xiàn)

在類(lèi)的聲明中用implements子句來(lái)表示一個(gè)類(lèi)使用某個(gè)介面,在類(lèi)體中可以使用介面中定義的常量,而且必須實(shí)現(xiàn)介面中定義的所有方法。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)介面,在implements子句中用逗號(hào)分開(kāi)。3)介面類(lèi)型的使用

介面作為一種引用類(lèi)型來(lái)使用。任何實(shí)現(xiàn)該介面的類(lèi)的實(shí)例都可以存儲(chǔ)在該介面類(lèi)型的變數(shù)中,通過(guò)這些變數(shù)可以訪問(wèn)類(lèi)所實(shí)現(xiàn)的介面中的方法。例1、介面定義publicinterfaceA{}也可以用extends去繼承已有的介面publicinterfaceAextendsB//B是已定義了的介面

{}在類(lèi)中使用介面需要使用關(guān)鍵字implements:

publicclassAimplementsB //這裏A為類(lèi),B為介面{}

√Java類(lèi)只允許單一繼承,即一個(gè)類(lèi)只能繼承(extends)一個(gè)父類(lèi);但一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)介面,Java支持介面的多重繼承。在Java類(lèi)定義中,可以同時(shí)包括extends子句和implements子句,如果存在extends子句,則implements子句應(yīng)跟隨extends子句後面。

例2介面實(shí)現(xiàn)interfaceA{intx=1;voidmethod1();}interfaceBextendsA{intx=2;voidmethod2();}publicclassExampleimplementsB{publicvoidmethod1(){ System.out.println("x="+x); System.out.println("A.x="+A.x); System.out.println("B.x="+B.x); System.out.println("Example.x="+Example.x);}publicvoidmethod2(){}publicstaticvoidmain(String[]args){ Exampled=newExample(); d.method1();}}例3介面作為類(lèi)型classWorkerimplementsRunnable{publicvoidrun(){ System.out.print("Workerrun!");}}publicclassServer{ publicstaticvoidmain(String[]args){ Runnablew=newWorker(); (newThread(w)).start(); }}介面不應(yīng)改變修改某個(gè)介面,為其添加一個(gè)方法,這個(gè)簡(jiǎn)單的修改可能會(huì)造成牽一發(fā)而動(dòng)全身的局面:所有實(shí)現(xiàn)這個(gè)介面的類(lèi)都將無(wú)法工作,因?yàn)楝F(xiàn)在他們已經(jīng)不再實(shí)現(xiàn)這個(gè)介面了。你要麼放棄對(duì)這個(gè)介面的修改,要麼連同修改所有實(shí)現(xiàn)這個(gè)介面的所有類(lèi)。在設(shè)計(jì)介面的最初,預(yù)測(cè)出介面的所有功能,這可能是不太現(xiàn)實(shí)。如果覺(jué)得介面非改不行,可以創(chuàng)建一個(gè)新的介面或者擴(kuò)展這個(gè)介面,算是一種折衷的解決方法。其他相關(guān)的類(lèi)可以保持不變,或者重新實(shí)現(xiàn)這個(gè)新的介面。4.2抽象類(lèi)什麼是抽象

抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。過(guò)程抽象和數(shù)據(jù)抽象是常用的兩種主要抽象手段。如何用面向?qū)ο蟮姆椒▽?shí)現(xiàn)抽象

一個(gè)抽象數(shù)據(jù)類(lèi)型(AbstractDataType,ADT)可以分解成4個(gè)部分,如圖4-2所示。語(yǔ)法和語(yǔ)義構(gòu)成抽象數(shù)據(jù)類(lèi)型ADT的說(shuō)明,讓使用者瞭解這個(gè)抽象數(shù)據(jù)類(lèi)型的特徵。屬性和方法構(gòu)成ADT的實(shí)現(xiàn),展示這個(gè)ADT是怎樣做成的。當(dāng)一個(gè)類(lèi)被聲明為abstract時(shí),這個(gè)類(lèi)被稱(chēng)為是抽象類(lèi)。所謂抽象類(lèi)就是沒(méi)有具體實(shí)例對(duì)象的類(lèi)。針對(duì)這個(gè)問(wèn)題,Java專(zhuān)門(mén)提供了一種機(jī)制,名為“抽象方法”。它屬於一種不完整的方法,只含有一個(gè)聲明,沒(méi)有方法主體。下麵是抽象方法聲明時(shí)採(cǎi)用的語(yǔ)法:abstractvoidX();人類(lèi)就是一個(gè)典型的抽象類(lèi)。我們知道,類(lèi)是對(duì)象的集合,對(duì)象是類(lèi)的實(shí)例化,而人類(lèi)這個(gè)類(lèi)卻不存在一個(gè)僅屬於它的具體對(duì)象。

抽象方法作為類(lèi)方法修飾符,abstract則聲明瞭一種僅有方法頭,而沒(méi)有具體的方法體和操作實(shí)現(xiàn)的抽象方法。

可見(jiàn),abstract方法只有方法頭的聲明,而用一個(gè)分號(hào)來(lái)代替方法體的定義:至於方法體的具體實(shí)現(xiàn),那是由當(dāng)前類(lèi)的不同子類(lèi)在它們各自的類(lèi)定義中完成的。需要特別注意的是,所有的抽象方法,都必須存在於抽象類(lèi)之中。除了抽象方法,抽象類(lèi)也可以有具體的數(shù)據(jù)和方法。例如,Person類(lèi)存儲(chǔ)人的名字並且用一個(gè)具體的方法來(lái)返回它。在Java編程語(yǔ)言中抽象方法是非常重要的概念。在介面裏你會(huì)大量的用到它。抽象方法只能出現(xiàn)在抽象類(lèi)中例abstractclassGraphic{publicstaticfinaldoublePI=3.1415926;doublearea(){return0;};abstractvoiddraw();}classPointextendsGraphic{protecteddoublex,y;publicPoint(doublex,doubley){this.x=x;this.y=y;}voiddraw(){ //在此實(shí)現(xiàn)畫(huà)一個(gè)點(diǎn)

System.out.println("Drawapointat("+x+","+y+")");}publicStringtoString(){ return"("+x+","+y+")";}}classLineextendsGraphic{protectedPointp1,p2;publicLine(Pointp1,Pointp2){ this.p1=p1; this.p2=p2;}voiddraw(){ //在此實(shí)現(xiàn)畫(huà)一條線

System.out.println("Drawalinefrom"+p1+"to"+p2);}}classCircleextendsGraphic{protectedPointo;protecteddoubler;publicCircle(Pointo,doubler){ this.o=o; this.r=r;}doublearea(){ returnPI*r*r;}voiddraw(){ //在此實(shí)現(xiàn)畫(huà)一個(gè)圓

System.out.println("Drawacircleat"+o+"andr="+r);}}publicclassGraphicDemo{publicstaticvoidmain(String[]args){ Graphic[]g=newGraphic[3];g[0]=newPoint(10,10);g[1]=newLine(newPoint(10,10),newPoint(20,30));g[2]=newCircle(newPoint(10,10),4);for(inti=0;i<g.length;i++){ g[i].draw(); System.out.println("Area="+g[i].area());}}}抽象類(lèi)和介面的比較抽象類(lèi)在Java語(yǔ)言中體現(xiàn)了一種繼承關(guān)係,要想使得繼承關(guān)係合理,抽象類(lèi)和繼承類(lèi)之間必須存在"是一個(gè)(isa)"關(guān)係,即抽象類(lèi)和繼承類(lèi)在本質(zhì)上應(yīng)該是相同的。而對(duì)於介面來(lái)說(shuō),並不要求介面和介面實(shí)現(xiàn)者在本質(zhì)上是一致的,介面實(shí)現(xiàn)者只是實(shí)現(xiàn)了介面定義的行為而已。Java中一個(gè)類(lèi)只能繼承一個(gè)父類(lèi),對(duì)抽象類(lèi)來(lái)說(shuō)也不能例外。但是,一個(gè)類(lèi)卻可以實(shí)現(xiàn)多個(gè)介面。在Java中按照繼承關(guān)係,所有的類(lèi)形成了一個(gè)樹(shù)型的層次結(jié)構(gòu),抽象類(lèi)位於這個(gè)層次中的某個(gè)位置。而介面卻不曾在這種樹(shù)型的層次結(jié)構(gòu),位於樹(shù)型結(jié)構(gòu)中任何位置的任何類(lèi)都可以實(shí)現(xiàn)一個(gè)或者多個(gè)不相干的介面。在抽象類(lèi)的定義中,我們可以定義方法,並賦予的默認(rèn)行為。而在介面的定義中,只能聲明方法,不能為這些方法提供默認(rèn)行為。抽象類(lèi)的維護(hù)要比介面容易一些,在抽象類(lèi)中,增加一個(gè)方法並賦予的默認(rèn)行為,並不一定要修改抽象類(lèi)的繼承類(lèi)。而介面一旦修改,所有實(shí)現(xiàn)該介面的類(lèi)都被破壞,需要重新修改。7.3包包在JAVA中的作用:檔夾將檔和應(yīng)用程式組織為組,包將類(lèi)組織為組包減少了命名衝突帶來(lái)的問(wèn)題,如果所有類(lèi)放在同一個(gè)包中就容易產(chǎn)生命名衝突引入包以後,聲明類(lèi)前必須聲明類(lèi)所在的包,格式:

package包1名.包2名…包n名;

例如:packagejava.awt;或:packagejavax.swing.event;

如果一個(gè)類(lèi)訪問(wèn)另一個(gè)包中的類(lèi),必須通過(guò)包來(lái)引用,有兩種引用方法

1)聲明該類(lèi)前,使用import語(yǔ)句例如:importjava.awt.Button;//Button為被訪問(wèn)的類(lèi),位於包java.awt中

importjava.awt.*;//引入包java.awt中的全部類(lèi)

2)訪問(wèn)另一個(gè)包中的類(lèi)時(shí),使用包名例如:java.awt.Buttonb=newjava.awt.Button();Example(自定義包使用)//exampleone//類(lèi)在同一個(gè)包中

publicclassDate2{intyear,month,day;voidsetDate(inty,intm,intd){year=y;month=m;day=d;}voidprint(){System.out.println(year+""+month+""+day);}}classUseDate2{publicstaticvoidmain(Stringargs[]){Date2b=newDate2();b.setDate(2004,9,1);b.print();}}//類(lèi)在不同包中//Date2.javapackagep1.p2;publicclassDate2{intyear,month,day;publicvoidsetDate(inty,intm,intd){year=y;month=m;day=d;}publicvoidprint(){System.out.println(year+""+month+""+day);}}//UseDate2.javaimportp1.p2.Date2;classUseDate2{publicstaticvoidmain(Stringargs[]){Date2b=newDate2();b.setDate(2004,9,1);b.print();}}Example在DOS窗口下的運(yùn)行DOS窗口下必須手動(dòng)建立包一編譯Date2.java1)建立保存p1.p2.Date2的檔夾,例如E:\db0312)設(shè)置環(huán)境變數(shù):右擊我的電腦選屬性、高級(jí)、環(huán)境變數(shù),雙擊系統(tǒng)變數(shù)中的CLASSPATH,在變數(shù)值中加入保存p1.p2.Date2的檔夾,例如;E:\db031(不要忘了環(huán)境變數(shù)以;隔開(kāi))3)E:\db031下建立p1和p2檔夾,將Date2.java保存E:\db031\p1\p2下4)打開(kāi)DOS窗口,進(jìn)入Date2所在目錄,即E:\db031\p1\p2。打開(kāi)DOS窗口的方法:顯示器左下角,點(diǎn)擊開(kāi)始、程式、附件、命令提示符;進(jìn)入E:\db031\p1\p2的方法:切換C:\>E:即輸入E:然後回車(chē)(如檔保存在C盤(pán),不須切換);進(jìn)入E\>cd\db031\p1\p25)編譯,E:\db031\p1\p2>javacDate2.java並回車(chē)二編譯並運(yùn)行UseDate2.java1)建立保存UseDate2的檔夾,例如:C:\db0322)保存UseDate2.java,編譯javacUseDate2.java3)3)運(yùn)行C:\db032下javaq.UseDate2.javaExample

在Jcreator下的運(yùn)行Jcreator下,系統(tǒng)按原始檔案中的package語(yǔ)句自動(dòng)建立包1)建立保存p1.p2.Date2的空project,例如E:\db031,保存Date2.java並編譯,可看到p1和p2已經(jīng)自動(dòng)生成2)編譯UseDate2.java3)建立保存UseDate2.java的空project,保存UseDate2.java,此時(shí)編譯會(huì)報(bào)錯(cuò)4)設(shè)置環(huán)境變數(shù)在Jcreator主菜單的project下選擇projectsettings…

選擇requiredlibraries後按new…

選擇classes後按add選addpath,找到p1.p2.Date2所在檔夾(E:\db031)

在Name中給該路徑命名,按OK

此時(shí)可看到該路徑名出現(xiàn)在文本框中,選中該路徑名,可看到該路徑已加入到ClassPath中5)編譯UseDate2.java並運(yùn)行環(huán)境變數(shù)classpath的配置Classpath的作用當(dāng)一個(gè)類(lèi)訪問(wèn)位於其他包中的其他類(lèi)時(shí),Classpath幫助該類(lèi)找到其他類(lèi),Classpath的值:Classpath就是包含被訪問(wèn)的類(lèi)所在的包的檔夾被訪問(wèn)的類(lèi)所在的包由被訪問(wèn)的類(lèi)的package語(yǔ)句聲明,並且必須建立同名的檔夾這樣,被訪問(wèn)的類(lèi)的路徑包括兩部分:Classpath的值和包兩個(gè)必須的Classpath值

.(實(shí)心句號(hào))表示當(dāng)前檔夾

(J2sdk)的安裝目錄\lib表示JAVA類(lèi)庫(kù)所在檔夾J2sdk和Jcreator的安裝J2sdk和JcreatorLE都是自由軟體,可免費(fèi)下載

J2sdk的網(wǎng)址:/j2se/1.4.2/download.html

還可下載Documation及其它資料

JcreatorLE的網(wǎng)址:/download.html

卸載J2sdk和JcreatorLE,方法:我的電腦、添加刪除程式選中JcreatorLE並刪除,選中Java2runtimeenvironment和J2sdk刪除從19下載Jcreator和J2sdk安裝軟體安裝J2sdk,安裝時(shí)可以設(shè)置安裝路徑,如設(shè)為:C:\j2sdk根據(jù)安裝路徑設(shè)置環(huán)境變數(shù)path:右擊我的電腦選屬性、高級(jí)、環(huán)境變數(shù),雙擊系統(tǒng)變數(shù)中的path,增加;(J2sdk安裝路徑)\bin例如;C:\j2sdk\bin

path設(shè)置後,打開(kāi)DOS窗口,鍵入java命令並回車(chē),可檢驗(yàn)設(shè)置是否正確設(shè)置環(huán)境變數(shù)classpath:右擊我的電腦選屬性、高級(jí)、環(huán)境變數(shù),雙擊系統(tǒng)變數(shù)中的classpath

增加.;(J2sdk安裝路徑)\lib例如:.;C:\j2sdk\lib

安裝JcreatorLEJ2sdk安裝時(shí)環(huán)境變數(shù)的設(shè)置設(shè)置path設(shè)置classpath習(xí)題1.填空題(1)我們可以通過(guò)____________,使得處?kù)恫煌瑢哟?,甚至互不相關(guān)的類(lèi)具有相同的行為,然後由每個(gè)類(lèi)分別去實(shí)現(xiàn)這些行為。(2)介面聲明的關(guān)鍵字是______________。(3)在聲明類(lèi)的同時(shí),我們可通過(guò)關(guān)鍵字__________________實(shí)現(xiàn)介面。(4)使用類(lèi)實(shí)現(xiàn)介面時(shí),必須__________該介面的所有方法。(5)Java中,我們可通過(guò)________來(lái)管理類(lèi)名空間。(6)創(chuàng)建包的關(guān)鍵字是:____________。(7)引入包grade的best類(lèi),可使用語(yǔ)句:____________________________。

2、操作題

1、通過(guò)設(shè)計(jì)一介面,定義有關(guān)算術(shù)的屬性。並創(chuàng)建四個(gè)應(yīng)用該介面的類(lèi),分別進(jìn)行加減乘除的運(yùn)算。5.1異常的概念例外就是在程式的運(yùn)行過(guò)程中所發(fā)生的異常事件,它中斷指令的正常執(zhí)行。Java中提供了一種獨(dú)特的處理例外的機(jī)制,通過(guò)例外來(lái)處理程式設(shè)計(jì)中出現(xiàn)的錯(cuò)誤。見(jiàn)demo\mod02\NoException.java見(jiàn)demo\mod02\ExceptionDemo1.javademo\mod02\ExceptionDemo2.java異常的處理機(jī)制

捕獲例外:

當(dāng)Java運(yùn)行時(shí)系統(tǒng)得到一個(gè)例外對(duì)象時(shí),它將會(huì)沿著方法的調(diào)用棧逐層回溯,尋找處理這一例外的代碼。找到能夠處理這種類(lèi)型的例外的方法後,運(yùn)行時(shí)系統(tǒng)把當(dāng)前例外對(duì)象交給這個(gè)方法進(jìn)行處理,這一過(guò)程稱(chēng)為捕獲(catch)例外。這是積極的例外處理機(jī)制。如果Java運(yùn)行時(shí)系統(tǒng)找不到可以捕獲例外的方法,則運(yùn)行時(shí)系統(tǒng)將終止,相應(yīng)的Java程式也將退出。

聲明拋棄例外:

如果一個(gè)方法並不知道如何處理所出現(xiàn)的例外,則可在方法聲明時(shí),聲明拋棄(throws)例外。這是一種消極的例外處理機(jī)制。異常類(lèi)層次在jdk中,每個(gè)包中都定義了例外類(lèi),而所有的例外類(lèi)都直接或間接地繼承於Throwable類(lèi)。下圖為jdk中例外類(lèi)的繼承關(guān)係。

異常的兩大類(lèi)Error

動(dòng)態(tài)鏈接失敗,虛擬機(jī)錯(cuò)誤等,通常Java程式不應(yīng)該捕獲這類(lèi)例外,也不會(huì)拋棄這種例外。

Exception

1)運(yùn)行時(shí)例外:

繼承於RuntimeException的類(lèi)都屬於運(yùn)行時(shí)例外,例如算術(shù)例外(除零錯(cuò))、數(shù)組下標(biāo)越界例外等等。由於這些例外產(chǎn)生的位置是未知的,Java編譯器允許程式員在程式中不對(duì)它們做出處理。

2)非運(yùn)行時(shí)例外:

除了運(yùn)行時(shí)例外之外的其他由Exception繼承來(lái)的例外類(lèi)都是非運(yùn)行時(shí)的例外,例如FileNotFoundException(檔未找到例外)。Java編譯器要求在程式中必須處理這種例外,捕獲例外或者聲明拋棄例外。throw:用戶(hù)自己產(chǎn)生異常異常的處理java語(yǔ)言中有兩種例外處理機(jī)制:捕獲例外和聲明拋棄例外捕獲異常捕獲例外是通過(guò)try-catch-finally語(yǔ)句實(shí)現(xiàn)的。try{

..//常規(guī)的代碼....

}catch(ExceptionName1e){

//處理異常......

}catch(ExceptionName2e){

......

}

......

}finally{

//不論發(fā)生什麼異常(或者不發(fā)生任何異常),都要執(zhí)行的部分

}

try捕獲例外的第一步是用try{…}選定捕獲例外的範(fàn)圍,由try所限定的代碼塊中的語(yǔ)句在執(zhí)行過(guò)程中可能會(huì)生成例外對(duì)象並拋棄。在try{…}這一部分,存放常規(guī)的代碼,期望或可能出錯(cuò)的代碼段catch每個(gè)try代碼塊可以伴隨一個(gè)或多個(gè)catch語(yǔ)句,用於處理try代碼塊中所生成的例外事件。catch語(yǔ)句只需要一個(gè)形式參數(shù)指明它所能夠捕獲的例外類(lèi)型,這個(gè)類(lèi)必須是Throwable的子類(lèi),運(yùn)行時(shí)系統(tǒng)通過(guò)參數(shù)值把被拋棄的例外對(duì)象傳遞給catch塊。

在catch塊中是對(duì)例外對(duì)象進(jìn)行處理的代碼,與訪問(wèn)其他對(duì)象一樣,可以訪問(wèn)一個(gè)例外對(duì)象的變數(shù)或調(diào)用它的方法。getMessage()是類(lèi)Throwable所提供的方法,用來(lái)得到有關(guān)異常事件的資訊,類(lèi)Throwable還提供了方法printStackTrace()用來(lái)跟蹤異常事件發(fā)生時(shí)執(zhí)行堆疊的內(nèi)容catchtry{

......}catch(FileNotFoundExceptione){

System.out.println(e);

System.out.println("message:"+e.getMessage());

e.printStackTrace(System.out);}catch(IOExceptione){

System.out.println(e);}

catch語(yǔ)句的順序:

捕獲例外的順序和catch語(yǔ)句的順序有關(guān),當(dāng)捕獲到一個(gè)例外時(shí),剩下的catch語(yǔ)句就不再進(jìn)行匹配。因此,在安排catch語(yǔ)句的順序時(shí),首先應(yīng)該捕獲最特殊的例外,然後再逐漸一般化。也就是一般先安排子類(lèi),再安排父類(lèi)。

finally捕獲例外的最後一步是通過(guò)finally語(yǔ)句為例外處理提供一個(gè)統(tǒng)一的出口,使得在控制流轉(zhuǎn)到程式的其他部分以前,能夠?qū)Τ淌降臓顟B(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語(yǔ)句都會(huì)被執(zhí)行。

finallyfinally在檔處理時(shí)非常有用try{

對(duì)檔進(jìn)行處理的程式;}catch(IOExceptione){//對(duì)檔異常進(jìn)行處理;}finally{

不論是否發(fā)生異常,都關(guān)閉檔;}捕獲異常編寫(xiě)Java程式,包含三種異常算術(shù)異常,字串越界,數(shù)組越界觀察輸出資訊:每個(gè)異常對(duì)象可以直接給出資訊聲明拋出異常

1.聲明拋出異常如果在一個(gè)方法中生成了一個(gè)例外,但是這一方法並不確切地知道該如何對(duì)這一異常事件進(jìn)行處理,這時(shí),一個(gè)方法就應(yīng)該聲明拋棄例外,使得例外對(duì)象可以從調(diào)用棧向後傳播,直到有合適的方法捕獲它為止。

聲明拋棄例外是在一個(gè)方法聲明中的throws子句中指明的。例如:

publicintread()throwsIOException{

......}

throws子句中同時(shí)可以指明多個(gè)例外,之間由逗號(hào)隔開(kāi)。例如:

publicstaticvoidmain(Stringargs[])throws

IOException,IndexOutOfBoundsException{…}

Mod02\Exception1.java觀察運(yùn)行結(jié)果聲明拋出異常

2.拋出例外

拋出例外就是產(chǎn)生例外對(duì)象的過(guò)程,首先要生成例外對(duì)象,例外或者由虛擬機(jī)生成,或者由某些類(lèi)的實(shí)例生成,也可以在程式中生成。在方法中,拋出例外對(duì)象是通過(guò)throw語(yǔ)句實(shí)現(xiàn)的。

例如:

IOExceptione=newIOException();

throwe;

可以拋出的例外必須是Throwable或其子類(lèi)的實(shí)例。下麵的語(yǔ)句在編譯時(shí)將會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤:

thrownewString("wanttothrow");拋出異常.拋棄異常:不是出錯(cuò)產(chǎn)生,而是人為地拋出throwThrowableObject;thrownewArithmeticException();例:編寫(xiě)程式人為拋出(JavaThrow.prj)ArithmeticException,ArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsExceptionMod02\JavaThrow.javaAmethodExceptionAnothermethodthrowcaught注意

自定義例外類(lèi)必須是Throwable的直接或間接子類(lèi)。

注意:一個(gè)方法所聲明拋棄的例外是作為這個(gè)方法與外界交互的一部分而存在的。所以,方法的調(diào)用者必須瞭解這些例外,並確定如何正確的處理他們。創(chuàng)建自己的異常不是由Java系統(tǒng)監(jiān)測(cè)到的異常(下標(biāo)越界,被0-除等),而是由用戶(hù)自己定義的異常.用戶(hù)定義的異常同樣要用try--catch捕獲,但必須由用戶(hù)自己拋出thrownewMyException.異常是一個(gè)類(lèi),用戶(hù)定義的異常必須繼承自Throwable或Exception類(lèi),建議用Exception類(lèi).創(chuàng)造自己的異常形如:classMyExceptionextendsException{….};例1:計(jì)算兩個(gè)數(shù)之和,當(dāng)任意一個(gè)數(shù)超出範(fàn)圍時(shí),拋出自己的異常publicclassNumberRangeExceptionextendsException{publicNumberRangeException(Stringmsg){super(msg);}}

創(chuàng)建自己的異常

publicbooleanaction(Eventevt,Objectarg){try{intanswer=CalcAnswer();answerStr=String.valueOf(answer);}catch(NumberRangeExceptione){answerStr=e.getMessage();}repaint();returntrue;}

4.6創(chuàng)造自己的異常.publicintCalcAnswer()throwsNumberRangeException{intint1,int2;intanswer=-1;Stringstr1=textField1.getText();Stringstr2=textField2.getText();try{int1=Integer.parseInt(str1);int2=Integer.parseInt(str2);if((int1<10)||(int1>20)||(int2<10)||(int2>20)){NumberRangeExceptione=newNumberRangeException(”Numbersnotwithinthespecifiedrange.");throwe;}answer=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論