版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄
第1章 Java環(huán)境及配置第2章Java基本語法
第3章類和接口
第4章JavaApplet
第5章Java圖形處理
第6章Java用戶界面技術(shù)
第7章異常、事件和多線程機(jī)制
第8章輸入輸出技術(shù)
第9章Java數(shù)據(jù)庫技術(shù)
第10章Java安全技術(shù)
第11章Java網(wǎng)絡(luò)技術(shù)(一)
第12章Java網(wǎng)絡(luò)技術(shù)(二)第13章Servlet技術(shù)第14章Java讀寫XML技術(shù)目錄第1章 Java環(huán)境及配置1第1章Java環(huán)境及配置1.1Java概述1.2Java語言的特點(diǎn)1.3Java應(yīng)用分類1.4JDK包的下載與安裝1.5Java環(huán)境配置1.6例子程序習(xí)題
第1章Java環(huán)境及配置1.1Java概述21.1Java概述Java是一種編程語言,它提供了一個(gè)同時(shí)用于程序開發(fā)、應(yīng)用和部署的環(huán)境。Java語言主要定位于網(wǎng)絡(luò)編程,使得程序可以最大限度地利用網(wǎng)絡(luò)資源。1.1Java概述Java是一種編31.2Java語言的特點(diǎn)1.跨平臺(tái)性所謂的跨平臺(tái)性,是指軟件可以不受計(jì)算機(jī)硬件和操作系統(tǒng)的約束而在任意計(jì)算機(jī)環(huán)境下正常運(yùn)行。這是軟件發(fā)展的趨勢和編程人員追求的目標(biāo)。之所以這樣說,是因?yàn)橛?jì)算機(jī)硬件的種類繁多,操作系統(tǒng)也各不相同,不同的用戶和公司有自己不同的計(jì)算機(jī)環(huán)境偏好,而軟件為了能在這些不同的環(huán)境里正常運(yùn)行,就需要獨(dú)立于這些平臺(tái)。1.2Java語言的特點(diǎn)1.4
而在Java語言中,Java自帶的虛擬機(jī)很好地實(shí)現(xiàn)了跨平臺(tái)性。Java源程序代碼經(jīng)過編譯后生成二進(jìn)制的字節(jié)碼是與平臺(tái)無關(guān)的,但是可被Java虛擬機(jī)識(shí)別的一種機(jī)器碼指令。Java虛擬機(jī)提供了一個(gè)字節(jié)碼到底層硬件平臺(tái)及操作系統(tǒng)的屏障,使得Java語言具備跨平臺(tái)性。而在Java語言中,Java自帶的虛擬機(jī)很好52.面向?qū)ο竺嫦驅(qū)ο笫侵敢詫?duì)象為基本粒度,其下包含屬性和方法。對(duì)象的說明用屬性表達(dá),而通過使用方法來操作這個(gè)對(duì)象。面向?qū)ο蠹夹g(shù)使得應(yīng)用程序的開發(fā)變得簡單易用,節(jié)省代碼。Java是一種面向?qū)ο蟮恼Z言,也繼承了面向?qū)ο蟮闹T多好處,如代碼擴(kuò)展、代碼復(fù)用等。2.面向?qū)ο?
3.安全性安全性可以分為四個(gè)層面,即語言級(jí)安全性、編譯時(shí)安全性、運(yùn)行時(shí)安全性、可執(zhí)行代碼安全性。語言級(jí)安全性指Java的數(shù)據(jù)結(jié)構(gòu)是完整的對(duì)象,這些封裝過的數(shù)據(jù)類型具有安全性。編譯時(shí)要進(jìn)行Java語言和語義的檢查,保證每個(gè)變量對(duì)應(yīng)一個(gè)相應(yīng)的值,編譯后生成Java類。運(yùn)行時(shí)Java類需要類加載器載入,并經(jīng)由字節(jié)碼校驗(yàn)器校驗(yàn)之后才可以運(yùn)行。Java類在網(wǎng)絡(luò)上使用時(shí),對(duì)它的權(quán)限進(jìn)行了設(shè)置,保證了被訪問用戶的安全性。3.安全性7
4.多線程多線程在操作系統(tǒng)中已得到了最成功的應(yīng)用。多線程是指允許一個(gè)應(yīng)用程序同時(shí)存在兩個(gè)或兩個(gè)以上的線程,用于支持事務(wù)并發(fā)和多任務(wù)處理。Java除了內(nèi)置的多線程技術(shù)之外,還定義了一些類、方法等來建立和管理用戶定義的多線程。4.多線程8
5.簡單易用
Java源代碼的書寫不拘泥于特定的環(huán)境,可以用記事本、文本編輯器等編輯軟件來實(shí)現(xiàn),然后將源文件進(jìn)行編譯,編譯通過后可直接運(yùn)行,通過調(diào)試則可得到想要的結(jié)果。5.簡單易用91.3Java應(yīng)用分類
1.應(yīng)用程序典型的通用程序可以在具備Java運(yùn)行環(huán)境的設(shè)備中獨(dú)立運(yùn)行,它又分為:
GUI應(yīng)用程序:即圖形用戶界面程序,可實(shí)現(xiàn)豐富的輸入界面和輸出顯示。命令行程序:無需界面,只需在命令行下運(yùn)行,運(yùn)行結(jié)果只在后臺(tái)發(fā)生變化,可以將輸出存放到文件中。嵌入式應(yīng)用程序:Java語言的平臺(tái)獨(dú)立性決定了它可以嵌入到不同的設(shè)備中,且只需具備必要的運(yùn)行環(huán)境即可。1.3Java應(yīng)用分類1.應(yīng)10
2.Servlets服務(wù)器端應(yīng)用程序服務(wù)器端的應(yīng)用程序用來收集客戶端的數(shù)據(jù)輸入,對(duì)數(shù)據(jù)進(jìn)行處理之后,返回相應(yīng)的響應(yīng)給客戶。它主要用來實(shí)現(xiàn)與客戶端的交互。2.Servlets服務(wù)器端應(yīng)用程序11
3.Applets小應(yīng)用程序
Applets應(yīng)用于網(wǎng)絡(luò)上,嵌入在HTML網(wǎng)頁中,支持Java的瀏覽器都可以對(duì)它進(jìn)行解釋并運(yùn)行。通常通過一個(gè)HTML標(biāo)簽<APPLET></APPLET>來識(shí)別并運(yùn)行Applets。小應(yīng)用程序的類在服務(wù)器端,當(dāng)瀏覽器顯示網(wǎng)頁時(shí),它隨之下載到本地,由本地的瀏覽器載入運(yùn)行。3.Applets小應(yīng)用程序121.4JDK包的下載與安裝JavaDevelopKit簡稱為JDK,是Sun公司免費(fèi)發(fā)行的軟件包,可以從Sun網(wǎng)站免費(fèi)下載,也可以從其它國內(nèi)地址下載。JDK版本從1.02開始,目前版本發(fā)展到1.4,其中高級(jí)版本對(duì)低級(jí)版本實(shí)現(xiàn)向下兼容。運(yùn)用這個(gè)軟件包,就可以對(duì)Java源程序進(jìn)行編譯和運(yùn)行。本書中下載使用的JDK包為j2sdk-1_4_0_012-windows-i586.exe。下載后雙擊圖標(biāo),即可進(jìn)行安裝,默認(rèn)的安裝目錄為C:\j2sdk1.4.0_01。本書作者將安裝目錄改為D:\j2sdk1.4.0_01。1.4JDK包的下載與安裝JavaDe131.5Java環(huán)境配置JDK包安裝完成后,需要設(shè)置環(huán)境變量。用鼠標(biāo)右鍵單擊桌面上的圖標(biāo)“我的電腦”,選擇“屬性”項(xiàng),出現(xiàn)標(biāo)題為“系統(tǒng)特性”的對(duì)話框,點(diǎn)擊“高級(jí)”標(biāo)簽,可以看見有一個(gè)“環(huán)境變量”按鈕,如圖1.1所示。1.5Java環(huán)境配置JDK包14圖1.1“系統(tǒng)特性”對(duì)話框圖1.1“系統(tǒng)特性”對(duì)話框15
單擊“環(huán)境變量”按鈕,可以看見本機(jī)環(huán)境變量,如圖1.2所示。上面為用戶變量,下面為系統(tǒng)變量,隨著操作系統(tǒng)或用戶環(huán)境的不同,變量名、值有所不同。這里需要修改三個(gè)用戶變量:include、lib和path,分別將JDK包安裝之后的相應(yīng)路徑包含到這三個(gè)用戶變量中。單擊“環(huán)境變量”按鈕,可以看見本機(jī)環(huán)境變量,16圖1.2“環(huán)境變量”對(duì)話框圖1.2“環(huán)境變量”對(duì)話框17
選中include變量,單擊“編輯”按鈕,彈出標(biāo)題為“編輯用戶變量”的對(duì)話框,如圖1.3所示。在變量值一欄的最后添加“;D:\j2sdk1.4.0_01\include”,“;”表示與前面的各項(xiàng)隔開,后面的路徑是JDK包的安裝路徑下的include目錄。圖1.3為作者修改include變量的情況,注意你的安裝路徑可能與作者的有所不同,要以你的安裝路徑為基準(zhǔn)進(jìn)行修改。選中include變量,單擊“編輯”按鈕,彈18圖1.3編輯include變量圖1.3編輯include變量19
選中l(wèi)ib變量,單擊“編輯”按鈕,彈出標(biāo)題為“編輯用戶變量”的對(duì)話框,如圖1.4所示。在變量值一欄的最后添加“;D:\j2sdk1.4.0_01\lib”,“;”表示與前面的各項(xiàng)隔開,后面的路徑是JDK包的安裝路徑下的lib目錄。圖1.4為作者修改lib變量的情況,注意你的安裝路徑可能與作者的有所不同,要以你的安裝路徑為基準(zhǔn)進(jìn)行修改。選中l(wèi)ib變量,單擊“編輯”按鈕,彈出標(biāo)題為20圖1.4編輯lib變量圖1.4編輯lib變量21
選中path變量,單擊“編輯”按鈕,彈出標(biāo)題為“編輯用戶變量”的對(duì)話框,如圖1.5所示。在變量值一欄的最后添加“;D:\j2sdk1.4.0_01\bin”,“;”表示與前面的各項(xiàng)隔開,后面的路徑是JDK包的安裝路徑下的bin目錄。圖1.5為作者修改path變量的情況,注意你的安裝路徑可能與作者的有所不同,同樣要以你的安裝路徑為基準(zhǔn)進(jìn)行修改。選中path變量,單擊“編輯”按鈕,彈出標(biāo)題22圖1.5編輯path變量圖1.5編輯path變量231.6例子程序【例1.1】源程序名稱為HelloWorld.java,命令行提示符下輸出字符串“HelloWorld”。源代碼如下://程序文件名稱為HelloWorld.javapublicclassHelloWorld{ publicstaticvoidmain(Stringargs[]) { System.out.println("HelloWorld"); }}1.6例子程序【例1.1】源程序名稱24
用記事本或者專用的編輯工具如EditPlus等進(jìn)行編輯,并將文件存為HelloWorld.java。建議使用像EditPlus這樣的編輯軟件,可使得代碼更加清晰且風(fēng)格良好。運(yùn)行“開始”菜單→程序→附件→命令提示符,載入命令行程序,在命令行狀態(tài)下,進(jìn)入源程序所在的目錄,圖1.6所示的例子程序的目錄在“E:\_Work\Java\sample”下,然后鍵入命令“javacHelloWorld.java”。若編譯不通過,會(huì)產(chǎn)生錯(cuò)誤提示。若編譯通過,則沒有任何提示,同時(shí)進(jìn)入命令行等待狀態(tài),如圖1.6所示。這時(shí),命令行雖然沒有提示,但在源程序的路徑下生成一個(gè)新的文件為HelloWorld.class。這個(gè).class文件就是編譯后生成的類文件,運(yùn)行此文件,需在命令行狀態(tài)中鍵入命令“javaHelloWorld”,然后按回車鍵,此時(shí)程序就會(huì)運(yùn)行并輸出“HelloWorld”。輸出完畢,立即退出程序,進(jìn)入命令行等待狀態(tài),如圖1.7所示。用記事本或者專用的編輯工具如EditPlus25圖1.6編譯源程序HelloWorld圖1.6編譯源程序HelloWorld26圖1.7運(yùn)行HelloWorld應(yīng)用程序圖1.7運(yùn)行HelloWorld應(yīng)用程序27
這里用到的命令Javac和Java都是JDK軟件包自帶的。從JDK安裝路徑的bin目錄下可以看到j(luò)avac.exe,這是編譯程序,源程序編譯通過后就生成.class文件;而Java.exe就是載入類的運(yùn)行程序,運(yùn)行時(shí)根據(jù)源程序的指令要求產(chǎn)生正確的輸出或結(jié)果。如果沒有進(jìn)行環(huán)境配置,直接編譯或者運(yùn)行Java源程序,系統(tǒng)會(huì)提示找不到這些命令,所以必須進(jìn)行環(huán)境配置后再使用。這里用到的命令Javac和Java都是JDK28【例1.2】小應(yīng)用程序的例子。輸出“HelloWorld!”,如圖1.8所示。源程序代碼如下://程序文件名稱為HelloApplet.javaimportjava.awt.Graphics;importjava.applet.Applet;publicclassHelloAppletextendsApplet{ publicvoidpaint(Graphicsg) { g.drawString("HelloWorld!",50,25); }}【例1.2】小應(yīng)用程序的例子。輸出“Hell29
小應(yīng)用程序代碼書寫和編譯完成后,無法獨(dú)立運(yùn)行,需要一個(gè)載體或者容器。下面的HTML網(wǎng)頁代碼就是小應(yīng)用程序載入的容器。<!--程序文件名稱為HelloApplet.html--><HTML><HEAD><TITLE>HTMLTestPage</TITLE></HEAD>小應(yīng)用程序代碼書寫和編譯完成后,無法獨(dú)立運(yùn)行,30<BODY>HelloAppletwillappearbelowinaJavaenabledbrowser.<BR><APPLETCODEBASE="."CODE="HelloApplet.class"NAME="TestApplet"WIDTH=400HEIGHT=300HSPACE=0VSPACE=0ALIGN=middle></APPLET></BODY></HTML><BODY>31圖1.8Applet顯示“HelloWorld!”圖1.8Applet顯示“HelloWorld!”32習(xí)題1.簡述Java的特點(diǎn)。2.簡述Java的分類情況。3.進(jìn)行Java環(huán)境的安裝和配置。4.編寫應(yīng)用程序,屏幕上輸出“歡迎來到Java世界!”。5.編寫Applet,輸出“歡迎來到Java世界!”。習(xí)題1.簡述Java的特點(diǎn)。33第2章Java基本語法2.1Java程序的構(gòu)成2.2數(shù)據(jù)類型、變量和常量2.3運(yùn)算符和表達(dá)式2.4流程控制2.5數(shù)組的使用習(xí)題
第2章Java基本語法2.1Java程序的構(gòu)成342.1Java程序的構(gòu)成2.1.1邏輯構(gòu)成
Java源程序邏輯構(gòu)成分為兩大部分:程序頭包的引用和類的定義。
1.程序頭包的引用主要是指引用JDK軟件包自帶的包,也可以是自己定義的類。引用之后程序體中就可以自由應(yīng)用包中的類的方法和屬性等。2.1Java程序的構(gòu)成2.1.1邏輯構(gòu)成352.類的定義
Java源程序中可以有多個(gè)類的定義,但必須有一個(gè)主類,這個(gè)主類是Java程序運(yùn)行的入口點(diǎn)。在應(yīng)用程序中,主類為包含main方法的類;在Applet中,主類為用戶自定義的系統(tǒng)Applet類的擴(kuò)展類。在Java源程序中,主類的名字同文件名一致。類的定義又包括類頭聲明和類體定義。類體中包括屬性聲明和方法描述。下面來看一個(gè)例子,其中斜體表示的語句行為主類類頭,主類類頭下面從大括號(hào)“{”開始到“}”結(jié)束的部分稱為主類類體。2.類的定義36【例2.1】下面是一個(gè)應(yīng)用程序,也是一個(gè)Applet,既可以在命令行下運(yùn)行,也可以嵌入到HTML網(wǎng)頁中用appletviewer命令運(yùn)行。運(yùn)行時(shí)在界面上的第一個(gè)文本框中輸入你的名字,按回車鍵后,在第二個(gè)文本框中會(huì)顯示“XXX,歡迎你來到Java世界!”,運(yùn)行結(jié)果如圖2.1所示。//程序文件名稱為WelcomeApplet.java注釋語句引入包publicclassWelcomeAppletextendsAppletimplementsActionListener主類類頭
{【例2.1】下面是一個(gè)應(yīng)用程序,也是一個(gè)App37屬性init方法屬性init方法38actionPerformed方法actionPerformed39main主方法main主方法40圖2.1程序界面圖2.1程序界面412.1.2物理構(gòu)成
Java源程序物理上由三部分構(gòu)成,分別為語句、塊和空白。
(1)語句指一行以分號(hào)“;”結(jié)束的語句。
(2)塊指用括號(hào)對(duì){}界定的語句序列,塊可以嵌套使用。
(3)空白指語句之間、塊內(nèi)部或者塊之間的空白行??瞻撞挥绊慗ava源程序的編譯和運(yùn)行,適當(dāng)?shù)剡\(yùn)用空白,可以形成良好的代碼風(fēng)格。2.1.2物理構(gòu)成42在例1.1中, LabellblName;TextFieldtxtName;TextFieldtxtDisp;都是語句,而
{ lblName=newLabel("請(qǐng)輸入您的名字:"); txtName=newTextField(8); txtDisp=newTextField(20); add(lblName); add(txtName); add(txtDisp); txtName.addActionListener(this); }是塊,語句之間、塊之間或塊內(nèi)部的空行都為空白。在例1.1中, 432.1.3注釋語句注釋語句主要用來進(jìn)行一些說明,或者標(biāo)記一些無用的程序語句。有兩種注釋方法,行注釋為以//開始的行;塊注釋以/*開始和*/結(jié)束,Java編譯器忽略注釋后的程序語句或說明。例如,下面的語句就是注釋語句用來說明程序文件名稱的。//程序文件名稱為WelcomeApplet.java上述的語句注釋可以更改為:/*程序文件名稱為WelcomeApplet.java*/或/*程序文件名稱為WelcomeApplet.java*/2.1.3注釋語句442.1.4標(biāo)識(shí)符、關(guān)鍵字和轉(zhuǎn)義符在Java語言中,標(biāo)識(shí)符是賦予變量、類和方法等的名稱。標(biāo)識(shí)符由編程者自己指定,但需要遵循一定的語法規(guī)范:
(1)標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)、美元符號(hào)($)組成,但美元符號(hào)用得較少。
(2)標(biāo)識(shí)符從一個(gè)字母、下劃線或美元符號(hào)開始。
(3)Java語言中,標(biāo)識(shí)符大小寫敏感,必須區(qū)別對(duì)待。
(4)標(biāo)識(shí)符沒有最大長度的限制,但最好表達(dá)特定的意思。
(5)標(biāo)識(shí)符定義不能是關(guān)鍵字。2.1.4標(biāo)識(shí)符、關(guān)鍵字和轉(zhuǎn)義符45
關(guān)鍵字又稱保留字,是指Java語言中自帶的用于標(biāo)志數(shù)據(jù)類型名或者程序構(gòu)造名等的標(biāo)識(shí)符,如public、double等。轉(zhuǎn)義符是指一些有特殊含義的、很難用一般方式表達(dá)的字符,如回車、換行等。所有的轉(zhuǎn)義符以反斜線(\)開頭,后面跟著一個(gè)字符來表示某個(gè)特定的轉(zhuǎn)義符,如表2.1所示。關(guān)鍵字又稱保留字,是指Java語言中自帶的用46表2.1轉(zhuǎn)義符表2.1轉(zhuǎn)義符472.2數(shù)據(jù)類型、變量和常量2.2.1數(shù)據(jù)類型
Java編程語言定義了八種基本的數(shù)據(jù)類型(見表2.2),共分為四類:整數(shù)類(byte、short、int、long)、文本類(char)、浮點(diǎn)類(double、float)和邏輯類(boolean)。2.2數(shù)據(jù)類型、變量和常量2.2.1數(shù)據(jù)類型48表2.2Java的數(shù)據(jù)類型表2.2Java的數(shù)據(jù)類型491.整數(shù)類(1)采用三種進(jìn)制——十進(jìn)制、八進(jìn)制和十六進(jìn)制。2——十進(jìn)制值是2;077——首位的0表示這是一個(gè)八進(jìn)制的數(shù)值;0xBAAC——首位的0x表示這是一個(gè)十六進(jìn)制的數(shù)值。(2)具有缺省int。(3)用字母“L”和“l(fā)”定義long。(4)所有Java編程語言中的整數(shù)類型都是帶符號(hào)的數(shù)字。1.整數(shù)類50
2.文本類
(1)代表一個(gè)16bitUnicode字符。
(2)必須包含用單引號(hào)('')引用的文字。
(3)使用下列符號(hào):
'a'——一個(gè)字符。
'\t'--一個(gè)制表符。
'\u????'--一個(gè)特殊的Unicode字符,????應(yīng)嚴(yán)格使用四個(gè)十六進(jìn)制數(shù)進(jìn)行替換。2.文本類51
3.浮點(diǎn)類默認(rèn)為double類型,如果一個(gè)數(shù)字包括小數(shù)點(diǎn)或指數(shù)部分,或者在數(shù)字后帶有字母F或f(float)、D或d(double),則該數(shù)字為浮點(diǎn)數(shù)。3.浮點(diǎn)類524.邏輯類boolean數(shù)據(jù)類型有兩種值:true和false。例如:booleanflag=true;上述語句聲明變量flag為boolean類型,它被賦予的值為true。4.邏輯類532.2.2變量與常量常量是指整個(gè)運(yùn)行過程中不再發(fā)生變化的量,例如數(shù)學(xué)中的π=3.1415……,在程序中需要設(shè)置成常量。而變量是指程序的運(yùn)行過程中發(fā)生變化的量,通常用來存儲(chǔ)中間結(jié)果,或者輸出臨時(shí)值。變量的聲明也指變量的創(chuàng)建。執(zhí)行變量聲明語句時(shí),系統(tǒng)根據(jù)變量的數(shù)據(jù)類型在內(nèi)存中開辟相應(yīng)的存儲(chǔ)空間并賦予初始值。變量有一個(gè)作用范圍,超出它聲明語句所在的塊就無效。2.2.2變量與常量54
下面看一個(gè)使用各種類型變量聲明并改變的示例。程序中pi為常量,s1、i1、l1、ch1、f1、d1、b1為全局變量,可以在方法change中發(fā)生改變,然后在方法main中輸出。而s2、i2、l2、ch2、f2、d2、b2是方法main的局部變量,它們的作用范圍只局限于方法main中。
【例2.2】測試不同數(shù)據(jù)類型的變量,程序輸出如圖2.2所示。源程序代碼如下://程序文件名稱為SetVariable.javapublicclassSetVariable{ //全局變量下面看一個(gè)使用各種類型變量聲明并改變的示例。55 staticdoublepi=3.141592654;//數(shù)學(xué)常量 staticshorts1; staticinti1; staticlongl1; staticcharch1; staticfloatf1; staticdoubled1; staticbooleanb1; publicstaticvoidmain(Stringargs[]) { staticdoublepi=3.1415926556 //局部變量
shorts2=35; inti2=-32; longl2=34555L; charch2='A'; floatf2=897.89F; doubled2=34.345; booleanb2=false; //輸出常量
System.out.println("數(shù)學(xué)常量pi="+pi); //輸出局部變量 //局部變量57System.out.println("******局部變量******");System.out.println("短整型變量s2="+s2);System.out.println("整型變量i2="+i2);System.out.println("長整型變量l2="+l2);System.out.println("字符變量ch2="+ch2);System.out.println("浮點(diǎn)數(shù)類型f2="+f2);System.out.println("雙精度型變量d2="+d2);System.out.println("布爾型變量b2="+b2);//調(diào)用方法修改全局變量的值System.out.println("******局部變量58change();//輸出全局變量的值System.out.println("******全局變量******");System.out.println("短整型變量s1="+s1);System.out.println("整型變量i1="+i1);System.out.println("長整型變量l1="+l1);System.out.println("字符變量ch1="+ch1);System.out.println("浮點(diǎn)數(shù)類型f1="+f1);System.out.println("雙精度型變量d1="+d1);System.out.println("布爾型變量b1="+b1);}change();59//方法:修改全局變量的值
publicstaticvoidchange(){ s1=125; i1=88; l1=987654321L; ch1='B'; f1=3.2590F; d1=-1.04E-5; b1=true;}}//方法:修改全局變量的值60圖2.2變量輸出結(jié)果圖2.2變量輸出結(jié)果612.3運(yùn)算符和表達(dá)式Java常用的運(yùn)算符分為五類:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、布爾邏輯運(yùn)算符、位運(yùn)算符。位運(yùn)算符除了簡單的按位操作外,還有移位操作。按位操作返回布爾值。表達(dá)式是由常量、變量、對(duì)象、方法調(diào)用和操作符組成的式子。表達(dá)式必須符合一定的規(guī)范,才可被系統(tǒng)理解、編譯和運(yùn)行。表達(dá)式的值就是對(duì)表達(dá)式自身運(yùn)算后得到的結(jié)果。根據(jù)運(yùn)算符的不同,表達(dá)式相應(yīng)地分為以下幾類:算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式,這些都屬于數(shù)值表達(dá)式。2.3運(yùn)算符和表達(dá)式Java常用的運(yùn)算符622.3.1算術(shù)運(yùn)算符及算術(shù)表達(dá)式
Java中常用的算術(shù)運(yùn)算符如下:
+ 加運(yùn)算符
- 減運(yùn)算符 * 乘運(yùn)算符
/ 除運(yùn)算符
% 取模運(yùn)算(除運(yùn)算的余數(shù)) ++ 增量運(yùn)算符
-- 減量運(yùn)算符2.3.1算術(shù)運(yùn)算符及算術(shù)表達(dá)式63【例2.3】測試運(yùn)算符及表達(dá)式,程序輸出如圖2.3所示。源程序代碼如下://程序文件名稱為NumberOper.javapublicclassNumberOper{ publicstaticvoidmain(Stringargs[]) { //變量初始化
inta=30; intb=20; //定義結(jié)果變量
intr1,r2,r3,r4,r5,r6,r7,r8,r9; //計(jì)算結(jié)果
r1=a+b;【例2.3】測試運(yùn)算符及表達(dá)式,程序輸出如圖264 r2=a-b; r3=a*b; r4=a/b; r5=a%b; r6=a++; r7=b--; r8=++a; r9=--b; //輸出結(jié)果
System.out.println("a="+a+"b="+b);//a,b的值
System.out.println("a+b="+r1); System.out.println("a-b="+r2); r2=a-b;65 System.out.println("a*b="+r3); System.out.println("a/b="+r4); System.out.println("a%b="+r5); System.out.println("a++="+r6); System.out.println("b--="+r7); System.out.println("++a="+r8); System.out.println("--b="+r9);}} System.out.println("a*b="+66圖2.3程序輸出結(jié)果圖2.3程序輸出結(jié)果672.3.2關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于比較兩個(gè)數(shù)據(jù)之間的大小關(guān)系,關(guān)系運(yùn)算表達(dá)式返回布爾值,即“真”或“假”。Java中的常用關(guān)系運(yùn)算符如下:== 等于!= 不等于> 大于< 小于>= 大于等于<= 小于等于2.3.2關(guān)系運(yùn)算符68【例2.4】編寫程序,測試關(guān)系運(yùn)算符及其表達(dá)式,程序輸出如圖2.4所示。源程序代碼如下://程序文件名稱為TestRelation.javapublicclassTestRelation{ publicstaticvoidmain(Stringargs[]) { //變量初始化
inta=30; intb=20; //定義結(jié)果變量
booleanr1,r2,r3,r4,r5,r6; //計(jì)算結(jié)果【例2.4】編寫程序,測試關(guān)系運(yùn)算符及其表達(dá)式69 r1=a==b; r2=a!=b; r3=a>b; r4=a<b; r5=a>=b; r6=a<=b; //輸出結(jié)果
System.out.println("a="+a+"b="+b); System.out.println("a==b="+r1); System.out.println("a!=b="+r2); System.out.println("a>b="+r3); System.out.println("a<b="+r4); System.out.println("a>=b="+r5); System.out.println("a<=b="+r6);}} r1=a==b;70圖2.4程序輸出結(jié)果圖2.4程序輸出結(jié)果712.3.3布爾邏輯運(yùn)算符表2.3布爾運(yùn)算符及規(guī)則2.3.3布爾邏輯運(yùn)算符表2.3布爾運(yùn)算符及規(guī)則72
圖2.3為布爾邏輯運(yùn)算符及其規(guī)則示例等。其中簡潔與和簡潔或的執(zhí)行結(jié)果分別與非簡潔與和非簡潔或的執(zhí)行結(jié)果是一致的,不同在于簡潔與檢測出符號(hào)左端的值為假時(shí),不再判斷符號(hào)右端的值,直接將運(yùn)算結(jié)果置為假;而簡潔或與非簡潔或的不同在于簡潔或檢測出符號(hào)左端為真時(shí),不再判斷符號(hào)右端的值,直接將運(yùn)算結(jié)果置為真。例如:Booleana=false;Booleanb=true;a&&b檢測到a為假,則無需判斷b的值,直接將值置為假;而b||a時(shí)檢測到b為真,則無需判斷a的值,直接將值置為真。圖2.3為布爾邏輯運(yùn)算符及其規(guī)則示例等。其中73【例2.5】測試布爾表達(dá)式,程序輸出結(jié)果如圖2.5所示。源程序代碼如下://程序文件名稱為TestLogic.javapublicclassTestLogic{ publicstaticvoidmain(Stringargs[]) { //變量初始化
booleana=false; booleanb=true; //定義結(jié)果變量
booleanr1,r2,r3,r4,r5,r6; //計(jì)算結(jié)果【例2.5】測試布爾表達(dá)式,程序輸出結(jié)果如圖274 r1=!a; r2=a&b; r3=a|b; r4=a^b; r5=a&&b; r6=a||b; //輸出結(jié)果
System.out.println("a="+a+"b="+b); System.out.println("!a="+r1); System.out.println("a&b="+r2); System.out.println("a|b="+r3); System.out.println("a^b="+r4); System.out.println("a&&b="+r5); System.out.println("a||b="+r6); }} r1=!a;75圖2.5程序輸出結(jié)果圖2.5程序輸出結(jié)果762.3.4位運(yùn)算符Java中的常用位運(yùn)算符如下:~ 位求反& 按位與| 按位或^ 按位異或<< 左移>> 右移>>> 不帶符號(hào)右移右移運(yùn)算符對(duì)應(yīng)的表達(dá)式為x>>a,運(yùn)算的結(jié)果是操作數(shù)x被2的a次方來除,左移運(yùn)算符對(duì)應(yīng)的表達(dá)式為x<<a,運(yùn)算的結(jié)果是操作數(shù)x乘以2的a次方。2.3.4位運(yùn)算符77【例2.6】測試位運(yùn)算符<<和>>,程序輸出結(jié)果如圖2.6所示。源程序代碼如下://程序文件名稱為TestBit.javapublicclassTestBit{ publicstaticvoidmain(Stringargs[]) { //變量初始化
inta=36; intb=2; //定義結(jié)果變量
intr1,r2;【例2.6】測試位運(yùn)算符<<和>>,程序輸出結(jié)78 //計(jì)算結(jié)果
r1=a>>b; r2=a<<b; //輸出結(jié)果
System.out.println("a="+a+"b="+b); System.out.println("a>>b="+r1); System.out.println("a<<b="+r2);}} //計(jì)算結(jié)果79圖2.6程序輸出結(jié)果圖2.6程序輸出結(jié)果802.3.5賦值運(yùn)算符賦值運(yùn)算符分為簡單運(yùn)算符和復(fù)雜運(yùn)算符。簡單運(yùn)算符指“=”,而復(fù)雜運(yùn)算符是指算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符中的雙目運(yùn)算符后面再加上“=”。表2.4列出Java常用的賦值運(yùn)算符及其等價(jià)表達(dá)式。 2.3.5賦值運(yùn)算符81表2.4賦值運(yùn)算符及其等價(jià)表達(dá)式表2.4賦值運(yùn)算符及其等價(jià)表達(dá)式822.3.6其它操作符及其表達(dá)式三目運(yùn)算符(?:)相當(dāng)于條件判斷,表達(dá)式x?y:z用于判斷x是否為真,如果為真,表達(dá)式的值為y,否則表達(dá)式的值為z。例如:intx=5;inta=(x>3)?5:3;則a的值為5。如果x=2,則a的值為3。2.3.6其它操作符及其表達(dá)式83
對(duì)象運(yùn)算符(instanceof)用來判斷一個(gè)對(duì)象是否屬于某個(gè)指定的類或其子類的實(shí)例,如果是,返回真(true),否則返回假(false)。例如:
booleanb=userObjectinstanceofApplet用來判斷userObject類是否是Applet類的實(shí)例。對(duì)象運(yùn)算符(instanceof)用來判斷一842.3.7優(yōu)先級(jí)表2.5運(yùn)算符優(yōu)先級(jí)2.3.7優(yōu)先級(jí)表2.5運(yùn)算符優(yōu)先級(jí)852.4流程控制
流程控制分為三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是指命令行順序執(zhí)行,這是最常見的一個(gè)格式;分支結(jié)構(gòu)是一種選擇結(jié)構(gòu),根據(jù)條件的值選擇不同的執(zhí)行流程,可以得到不同的結(jié)果。分支結(jié)構(gòu)包括單分支語句(if-else語句)和多分支語句(switch語句);循環(huán)結(jié)構(gòu)是指對(duì)于一些重復(fù)執(zhí)行的語句,用戶指定條件或次數(shù),由機(jī)器自動(dòng)識(shí)別執(zhí)行。循環(huán)結(jié)構(gòu)包括次數(shù)循環(huán)語句(for語句)和條件循環(huán)語句(while語句)。2.4流程控制流程控制分為三種基本862.4.1分支語句分支語句分為兩類:單分支語句和多選語句。1.if-else語句if-else語句的基本格式為:if(布爾表達(dá)式){
語句或塊1;}else{
語句或塊2;}2.4.1分支語句87
其中:
(1)布爾表達(dá)式返回值為true或false。
(2)如果為true,則執(zhí)行語句或塊1,執(zhí)行完畢跳出if-else語句。
(3)如果為false,則跳過語句或塊1,然后執(zhí)行else下的語句或塊2。其中:88【例2.7】測試if-else語句,如果x>10,則輸出x的值,并提示結(jié)果正確,否則輸出x=10,提示結(jié)果不正確。程序輸出結(jié)果如圖2.7所示。源程序代碼如下://程序文件名稱為TestIf.javapublicclassTestIf{ //聲明全局變量x staticintx; publicstaticvoidmain(Stringargs[]) { x=12; if(x>10) {【例2.7】測試if-else語句,如果x>189 System.out.println("x="+x+"結(jié)果正確"); } else System.out.println("x=10"+"結(jié)果不正確"); change(); System.out.println("修改x的值之后"); if(x>10) { System.out.println("x="+x+"結(jié)果正確"); } else System.out.println("x=10"+"結(jié)果不正確");} System.out.println("x90//change方法:修改x的值publicstaticvoidchange(){ x=5;}}//change方法:修改x的值91圖2.7程序輸出結(jié)果圖2.7程序輸出結(jié)果922.switch語句switch語句的基本格式為:switch(表達(dá)式1){case表達(dá)式2:
語句或塊2; break;case表達(dá)式3:
語句或塊3; break;case表達(dá)式4:
語句或塊4; break;default:
語句或塊5; break;}2.switch語句93其中:(1)表達(dá)式1的值必須與整型兼容。(2)?case分支要執(zhí)行的程序語句。(3)表達(dá)式2、3、4是可能出現(xiàn)的值。(4)不同的case分支對(duì)應(yīng)著不同的語句或塊序列。
(5)?break表示跳出這一分支。其中:94【例2.8】測試switch語句,當(dāng)x=1、2、3時(shí),分別打印1、2、3,x不為這三個(gè)值時(shí),打印x的值。程序輸出結(jié)果如圖2.8所示。源程序代碼如下://程序文件名稱為TestSwitch.javapublicclassTestSwitch{ publicstaticvoidmain(Stringargs[]) //聲明變量x intx; x=12;【例2.8】測試switch語句,當(dāng)x=1、2、3時(shí),95 System.out.println("x=12時(shí)打印的值"); choose(x); x=3; System.out.println("x=3時(shí)打印的值"); choose(x);}//choose方法:switch語句結(jié)構(gòu)publicstaticvoidchoose(intx){ switch(x) { System.out.println("x=12時(shí)打印的值96 case1: System.out.println(1); break; case2: System.out.println(2); break; case3: System.out.println(3); break; default: System.out.println(x); } } } case1:97圖2.8程序輸出結(jié)果圖2.8程序輸出結(jié)果982.4.2for循環(huán)語句for循環(huán)語句實(shí)現(xiàn)已知次數(shù)的循環(huán),其基本格式為:for(初始化表達(dá)式;測試表達(dá)式;步長){
語句或塊;}2.4.2for循環(huán)語句99
其執(zhí)行順序如下:
(1)首先運(yùn)行初始化表達(dá)式。
(2)然后計(jì)算測試表達(dá)式,如果表達(dá)式為true,執(zhí)行語句或塊;如果表達(dá)式為false,退出for循環(huán)。
(3)最后執(zhí)行步長。其執(zhí)行順序如下:100【例2.9】用for循環(huán)統(tǒng)計(jì)1~100(包括100)之間數(shù)的總和。程序輸出結(jié)果如圖2.9所示。源程序代碼如下://程序文件名稱為TestFor.javapublicclassTestFor{ publicstaticvoidmain(Stringargs[]) { intsum=0; for(inti=1;i<=100;i++) sum+=i; System.out.println("1到100(包括100)的數(shù)的總和為:"+sum); }}【例2.9】用for循環(huán)統(tǒng)計(jì)1~100(包括1101圖2.9程序輸出結(jié)果圖2.9程序輸出結(jié)果1022.4.3while循環(huán)語句
while循環(huán)語句實(shí)現(xiàn)受條件控制的循環(huán),其基本格式為:
while(布爾表達(dá)式){
語句或塊;}
當(dāng)布爾表達(dá)式為true時(shí),執(zhí)行語句或塊,否則跳出while循環(huán)。2.4.3while循環(huán)語句103上面for循環(huán)語句的例子改為while語句后如下所示:
intsum=0; inti=1; while(i<=100) { sum+=i;i++;} System.out.println("1到100(包括100)的數(shù)的總和為:"+sum);上面for循環(huán)語句的例子改為while語句后如下所示:1042.4.4do語句do語句實(shí)現(xiàn)受條件控制的循環(huán),其基本格式為:do{
語句或塊;}while(布爾表達(dá)式)2.4.4do語句105
先執(zhí)行語句或塊,然后再判斷布爾表達(dá)式。與while語句不同,當(dāng)布爾表達(dá)式一次都不為true時(shí),while語句一開始判斷就跳出循環(huán),不執(zhí)行語句或塊,而在do語句中則要執(zhí)行一次。上面那個(gè)例子改為do循環(huán)為:
intsum=0;inti=1;do{ sum+=i; i++;}while(i<=100);System.out.println("1到100(包括100)的數(shù)的總和為:"+sum);先執(zhí)行語句或塊,然后再判斷布爾表達(dá)式。與wh1062.5數(shù)組的使用2.5.1數(shù)組聲明數(shù)組的定義如下:
(1)首先是一個(gè)對(duì)象。
(2)存放相同的數(shù)據(jù)類型,可以是原始數(shù)據(jù)類型或類類型。
(3)所有的數(shù)組下標(biāo)默認(rèn)從0開始,而且訪問時(shí)不可超出定義的上限,否則會(huì)產(chǎn)生越界錯(cuò)誤。2.5數(shù)組的使用2.5.1數(shù)組聲明107
數(shù)組聲明時(shí)實(shí)際是創(chuàng)建一個(gè)引用,通過代表引用的這個(gè)名字來引用數(shù)組。數(shù)組聲明格式如下:數(shù)據(jù)類型標(biāo)識(shí)符[]
例如:
inta[];//聲明一個(gè)數(shù)據(jù)類型為整型的數(shù)組apencilb[];//聲明一個(gè)數(shù)據(jù)類型為pencil類的數(shù)組b數(shù)組聲明時(shí)實(shí)際是創(chuàng)建一個(gè)引用,通過代表引用的1082.5.2創(chuàng)建數(shù)組由于數(shù)組是一個(gè)對(duì)象,所以可以使用關(guān)鍵字new來創(chuàng)建一個(gè)數(shù)組,例如:a=newint[10];//創(chuàng)建存儲(chǔ)10個(gè)整型數(shù)據(jù)的數(shù)組ab=newpencil[20];//創(chuàng)建存儲(chǔ)20個(gè)pencil類數(shù)據(jù)的數(shù)組b
數(shù)組創(chuàng)建時(shí),每個(gè)元素都按它所存放數(shù)據(jù)類型的缺省值被初始化,如上面數(shù)組a的值被初始化為0,也可以進(jìn)行顯式初始化。在Java編程語言中,為了保證系統(tǒng)的安全,所有的變量在使用之前必須是初始化的,如果未初始化,編譯時(shí)會(huì)提示出錯(cuò)。有兩種初始化數(shù)組的方式,分別如下:2.5.2創(chuàng)建數(shù)組109(1)創(chuàng)建數(shù)組后,對(duì)每個(gè)元素進(jìn)行賦值。a[0]=5;a[1]=4;...a[9]=10;(2)直接在聲明的時(shí)候就說明其值,例如:inta[]={4,5,1,3,4,20,2};說明了一個(gè)長度為7的一維數(shù)組。(1)創(chuàng)建數(shù)組后,對(duì)每個(gè)元素進(jìn)行賦值。110【例2.10】編寫程序測試數(shù)組,程序輸出結(jié)果如圖2.10所示。源程序代碼如下://程序文件名稱為TestArray.javapublicclassTestArray{ publicstaticvoidmain(Stringargs[]) { //聲明數(shù)組
inta[]; charb[]; //創(chuàng)建數(shù)組【例2.10】編寫程序測試數(shù)組,程序輸出結(jié)果如111 a=newint[3]; b=newchar[2]; //數(shù)組初始化
for(inti=0;i<3;i++) { a[i]=i*3; } b[0]='a'; b[1]='b'; //快速初始化數(shù)組
intc[]={0,1*3,2*3}; //輸出結(jié)果
System.out.print("數(shù)組a\n"); a=newint[3];112 for(inti=0;i<2;i++) { System.out.print(b[i]+""); } System.out.print("\n數(shù)組c\n"); for(inti=0;i<3;i++) { System.out.print(c[i]+""); }}} for(inti=0;i<2;i++)113圖2.10程序輸出結(jié)果圖2.10程序輸出結(jié)果114習(xí)題1.給出下列表達(dá)式的值。(1)3++4<<2^-8 (2)"abc"&123||8<<2(3)36>>2*4&&48<<8/4+2 (4)2*4&&0<2||4%22.編寫程序,統(tǒng)計(jì)課程編號(hào)為1001、1002、2001和3001的平均成績并輸出。學(xué)生成績表如圖2.11所示。【每個(gè)課程編號(hào)的成績用數(shù)組存儲(chǔ),讀取時(shí)循環(huán)操作】習(xí)題1.給出下列表達(dá)式的值。115圖2.11習(xí)題2.2的成績表圖2.11習(xí)題2.2的成績表1163.根據(jù)上題得出的考生平均成績進(jìn)行判斷,如果在90分以上,屏幕上輸出“課程編號(hào)為XXXX的考生平均成績?yōu)閮?yōu)”;在80~90分之間輸出“課程編號(hào)為XXXX的考生平均成績?yōu)榱肌?;?0~80分之間輸出“課程編號(hào)為XXXX的考生平均成績?yōu)橹小?,?0~70分之間輸出“課程編號(hào)為XXXX的考生平均成績?yōu)榧案瘛保?0分以下輸出“課程編號(hào)為XXXX的考生平均成績?yōu)椴患案瘛薄?/p>
4.編寫程序,用數(shù)組實(shí)現(xiàn)乘法小九九的存儲(chǔ)和輸出?!咎崾荆翰捎枚鄠€(gè)一維數(shù)組。】3.根據(jù)上題得出的考生平均成績進(jìn)行判斷,117第3章類和接口3.1類3.2接口3.3常用數(shù)據(jù)結(jié)構(gòu)及類習(xí)題
第3章類和接口3.1類1183.1類3.1.1類的定義和聲明
Java編程語言是面向?qū)ο蟮?,處理的最小的完整單元為?duì)象。而現(xiàn)實(shí)生活中具有共同特性的對(duì)象的抽象就稱之為類。類由類聲明和類體構(gòu)成,類體又由變量和方法構(gòu)成。下面給出一個(gè)例子來看一下類的構(gòu)成。
【例3.1】自定義一個(gè)apple類,在主類SetApple中創(chuàng)建實(shí)例并調(diào)用方法,輸出結(jié)果如圖3.1所示。源程序代碼如下:3.1類3.1.1類的定義和聲明119//程序文件名為SetApple.javapublicclassSetApple{ publicstaticvoidmain(String[]args) { applea=newapple();//創(chuàng)建apple類
a.appleweight=0.5;//實(shí)例變量賦值
System.out.println("蘋果的重量為1兩"); System.out.println(a.bite());//調(diào)用實(shí)例方法
a.appleweight=5; System.out.println("蘋果的重量為5兩"); System.out.println(a.bite()); }}//程序文件名為SetApple.java120//自定義類classapple{ //屬性
longapplecolor;//對(duì)應(yīng)蘋果的顏色
doubleappleweight;//蘋果的重量
booleaneatup;//是否吃完
//類方法
publicbooleanbite() { if(appleweight<1) { System.out.println("蘋果已經(jīng)吃完了!哈哈"); eatup=true; }//自定義類121 else { System.out.println("蘋果吃不下了?。?"); eatup=false; } returneatup;}} else122圖3.1自定義類的應(yīng)用圖3.1自定義類的應(yīng)用123
1.類聲明的基本格式訪問說明符class類名extends超類名implements接口名其中:
(1)訪問說明符為public或者缺省。public用來聲明該類為公有類,可以被別的對(duì)象訪問。聲明為公有的類存儲(chǔ)的文件名為類名。
(2)類名:用戶自定義的標(biāo)識(shí)符,用來標(biāo)志這個(gè)類的引用。
(3)超類名:是指已經(jīng)存在的類,可以是用戶已經(jīng)定義的,也可以是系統(tǒng)類。
(4)接口名:即后面講到的接口。1.類聲明的基本格式124
例如:
publicclassHelloAppletextendsApplet
訪問說明符為public,類名HelloApplet,擴(kuò)展類為JDK包自帶的java.applet.Applet類。由于public的存在,所以文件名必須存為HelloApplet.java,同類名保持一致。例如:125
2.類體類體包括成員變量和方法。
(1)成員變量:指類的一些屬性定義,標(biāo)志類的靜態(tài)特征,它的基本格式如下:訪問說明符數(shù)據(jù)類型變量名其中:●訪問說明符有public、private和protected三種:
public:省略時(shí)默認(rèn)為公有類型,可以由外部對(duì)象進(jìn)行訪問。
private:私有類型,只允許在類內(nèi)部的方法中使用,若從外部訪問,必須通過構(gòu)造函數(shù)間接進(jìn)行。
Protected:受保護(hù)類型,子類訪問受到限制?!駭?shù)據(jù)類型包括基本類型以及用戶自定義的擴(kuò)展類型。2.類體126(2)方法:是類的操作定義,標(biāo)志類的動(dòng)態(tài)特征,它的基本格式如下:●訪問說明符數(shù)據(jù)類型方法名(數(shù)據(jù)類型1變量名1,數(shù)據(jù)類型2變量名2)
其中:●訪問說明符為public、private和protected,其使用方法與成員變量訪問說明符的使用方法一致?!駭?shù)據(jù)類型:包括基本數(shù)據(jù)類型和用戶自定義的擴(kuò)展類型?!駭?shù)據(jù)類型為參數(shù)。(2)方法:是類的操作定義,標(biāo)志類的動(dòng)態(tài)特1273.創(chuàng)建類的實(shí)例使用關(guān)鍵字new進(jìn)行創(chuàng)建,例如:HelloApplethp=newHelloApplet();例3.1中,自定義類apple,訪問標(biāo)識(shí)符缺省,定義三個(gè)屬性:longapplecolor;//對(duì)應(yīng)蘋果的顏色doubleappleweight;//蘋果的重量
booleaneatup;//是否吃完3.創(chuàng)建類的實(shí)例128一個(gè)方法為:
publicbooleanbite()//類方法{...}公有類SetApplet中引用自定義類,首先創(chuàng)建類的實(shí)例:
applea=newapple();其次賦初值:
a.appleweight=0.5;//實(shí)例變量賦值最后調(diào)用它的方法:
System.out.println(a.bite());//調(diào)用實(shí)例方法一個(gè)方法為:1293.1.2類的單繼承性
Java編程語言中允許用extends關(guān)鍵字從一個(gè)類擴(kuò)展出一個(gè)新類,新類繼承超類的成員變量和方法,并可以覆蓋方法。
【例3.2】測試類的單繼承性,程序輸出結(jié)果如圖3.2所示。源程序代碼如下://程序文件名TestExtend.javapublicclassTestExtendextendsEmployee{ publicstaticvoidmain(String[]args) { System.out.println("覆蓋的方法調(diào)用:"+getSalary("王一",500));3.1.2類的單繼承性130System.out.println("繼承的方法調(diào)用:"+getSalary2("王一",500));System.out.println("覆蓋的方法調(diào)用:"+getSalary("王飛",10000));System.out.println(“繼承的方法調(diào)用:”+getSalary2(“王飛 ",10000));}publicstaticStringgetSalary(Stringname,intsalary){ Stringstr; if(salary>5000) str="名字:"+name+"Salary:"+salary; else str="名字:"+name+"Salary:低于5000";System.out.println(131 returnstr;}};classEmployee{publicStringname;//名字publicintsalary;//薪水publicstaticStringgetSalary(Stringname,intsalary){ Stringstr; str="名字:"+name+"Salary:"+salary; returnstr;} returnstr;132publicstaticStringgetSalary2(Stringname,intsalary){ Stringstr; str="名字:"+name+"Salary:"+salary; returnstr;}};publicstaticStringgetSalary133
程序中定義了父類Employee類,它有兩個(gè)方法getSalary和getSalary2,方法體的實(shí)現(xiàn)都是一致的,都為輸出名字和薪水的值。在TextExtend主類中覆蓋了getSalary方法,方法體重新定義為薪水低于5000時(shí)并不輸出薪水的值而是輸出“低于5000”,用于和繼承的getSalary2方法進(jìn)行比較。由圖3.2可以看出覆蓋的方法按主程序中重定義的方法調(diào)用,而繼承的方法直接調(diào)用父類中的方法。程序中定義了父類Employee類,它有兩個(gè)134圖3.2測試單繼承性程序的輸出結(jié)果圖3.2測試單繼承性程序的輸出結(jié)果1353.1.3特殊變量類中有兩個(gè)特殊變量super和this。
1.super
類聲明中用關(guān)鍵字extends擴(kuò)展了其超類之后,super用在擴(kuò)展類中引用其超類中的成員變量。
【例3.3】使用super變量,輸出結(jié)果如圖3.3所示。源程序代碼如下://程序文件名為UseSuper.javapublicclassUseSuper{3.1.3特殊變量136 publicstaticvoidmain(String[]args) { Managerm=newManager(); ="王飛"; m.salary=10000; m.department="業(yè)務(wù)部"; System.out.println(m.getSalary()); }}classEmployee{ publicstaticvoidmain(Strin137 publicStringname;//名字
publicintsalary;//薪水
//方法
publicStringgetSalary() { Stringstr; str="名字:"+name+"\nSalary:"+salary;returnstr; }}classManagerextendsEmployee publicStringname;//名字138{publicStringdepartment;//部門
//方法
publicStringgetSalary(){//使用super變量調(diào)用超類的方法
returnsuper.getSalary()+"\nDepartment:"+department;}}{139圖3.3測試super變量的輸出圖3.3測試super變量的輸出1402.thisthis變量指向當(dāng)前對(duì)象或?qū)嵗?/p>
str="名字:"+name+"\nSalary:"+salary;
上例中的語句可以換成下面的語句。
str="名字:"++"\nSalary:"+this.salary;
這兩者是等同的,因?yàn)樵贘ava編程語言中,系統(tǒng)自動(dòng)將this關(guān)鍵字與當(dāng)前對(duì)象的變量相關(guān)聯(lián)。但有一種情況例外,就是當(dāng)在某些完全分離的類中調(diào)用一個(gè)方法并將當(dāng)前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)開發(fā)精美合同協(xié)議范本(品質(zhì)保障版)3篇
- 2024版幼兒娛樂場所承包合同條款匯編版
- 二零二五版租賃住房合同糾紛調(diào)解規(guī)范3篇
- 2024版汽車租賃委托付款協(xié)議書
- 2025年度版權(quán)監(jiān)測合同標(biāo)的:盜版監(jiān)測與維權(quán)3篇
- 二零二五版勞動(dòng)合同主體變更與員工培訓(xùn)補(bǔ)貼協(xié)議3篇
- 2024年科技成果轉(zhuǎn)化與合作合同
- 二零二五年度跨境電商金融合同履行與跨境支付服務(wù)3篇
- 二零二五年度生態(tài)環(huán)保庫房租賃合同3篇
- 二零二五年度房地產(chǎn)項(xiàng)目招投標(biāo)及合同簽訂協(xié)議3篇
- 服裝新店開業(yè)活動(dòng)促銷方案
- 小學(xué)美術(shù)課堂案例分析
- 企業(yè)管理干股入股合作協(xié)議書
- 2024年社區(qū)工作者考試必背1000題題庫【含答案】
- AIOT智能物聯(lián)產(chǎn)業(yè)學(xué)院建設(shè)方案
- 2024年全國高考物理電學(xué)實(shí)驗(yàn)真題(附答案)
- 護(hù)士培訓(xùn)課件:醫(yī)療護(hù)士法律法規(guī)應(yīng)知應(yīng)會(huì)
- 《陶瓷裝飾?彩繪》課程標(biāo)準(zhǔn)
- 三年級(jí)上冊口算練習(xí)1000道三附答案
- T-902 千分尺內(nèi)校報(bào)告
- 強(qiáng)奸罪起訴狀
評(píng)論
0/150
提交評(píng)論