Java程序設(shè)計實戰(zhàn)案例教程教學(xué)課件匯總完整版電子講義_第1頁
Java程序設(shè)計實戰(zhàn)案例教程教學(xué)課件匯總完整版電子講義_第2頁
Java程序設(shè)計實戰(zhàn)案例教程教學(xué)課件匯總完整版電子講義_第3頁
Java程序設(shè)計實戰(zhàn)案例教程教學(xué)課件匯總完整版電子講義_第4頁
Java程序設(shè)計實戰(zhàn)案例教程教學(xué)課件匯總完整版電子講義_第5頁
已閱讀5頁,還剩487頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java平臺安裝目錄/Contents01020304Java概述JDK的安裝Eclipse安裝與使用第一個Java程序的編寫01Java概述一種高級計算機語言可編寫跨平臺應(yīng)用軟件完全面向?qū)ο笥蒘UN公司(已被Oracle公司收購)于1995年5月推出簡單易用、安全可靠應(yīng)用領(lǐng)域廣泛Java概述JavaSE標(biāo)準(zhǔn)版(JavaPlatformStandardEdition)Java的三大技術(shù)平臺為開發(fā)普通桌面和商務(wù)應(yīng)用程序提供的解決方案JavaEE企業(yè)版(JavaPlatformEnterpriseEdition)JavaME小型版(JavaPlatformMicroEdition)為開發(fā)企業(yè)級應(yīng)用程序提供的解決方案為開發(fā)電子消費產(chǎn)品和嵌入式設(shè)備提供的解決方案Java的三大技術(shù)平臺02JDK的安裝JavaDevelopmentKit,即Java開發(fā)工具包SUN公司提供了一套Java開發(fā)環(huán)境整個Java的核心包括Java編譯器、Java運行環(huán)境、Java工具、Java基礎(chǔ)類庫等JDKJREJavaRuntimeEnvironment,即Java運行環(huán)境JRE通常已包含在JDK中若僅用于運行Java程序,而非Java開發(fā),可以直接下載JRE,并在系統(tǒng)中安裝即可。JDK-JRE-JVM的概念javavirtualmachine,即Java虛擬機整個java實現(xiàn)跨平臺的最核心的部分所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執(zhí)行。JVMJDK、JRE及JVM的關(guān)系JDK(JavaDevelopmentKit)是針對Java開發(fā)員的產(chǎn)品,是整個Java的核心,包括了Java運行環(huán)境JRE、Java工具和Java基礎(chǔ)類庫。JRE(JavaRuntimeEnvironment)是運行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實現(xiàn)及Java核心類庫。JVM(JavaVirtualMachine)是Java虛擬機的縮寫,是整個java實現(xiàn)跨平臺的最核心的部分,能夠運行以Java語言寫作的軟件程序。JDK的安裝Oracle公司提供了多種操作系統(tǒng)的JDK,可以根據(jù)自己使用的操作系統(tǒng),從Oracle官方網(wǎng)站下載相應(yīng)的JDK安裝文件,具體步驟如下:雙擊從Oracle官網(wǎng)下載的安裝文件,進入JDK安裝界面單擊【下一步】按鈕進入JDK的自定義安裝界面在自定義安裝功能和路徑界面選擇安裝目錄,或直接采用默認(rèn)的安裝目錄,單擊【確定】按鈕在對所有的安裝選項做出選擇后,單擊【下一步】按鈕開始安裝JDK。安裝完畢后會進入安裝完成界面單擊【關(guān)閉】按鈕,關(guān)閉當(dāng)前窗口,完成JDK安裝12345JDK的安裝JDK安裝完畢后,會在硬盤上生成一個目錄,該目錄被稱為JDK安裝目錄。如下圖所示:03Eclipse的安裝與使用112345為了提高程序的開發(fā)效率,大部分軟件開發(fā)人員都是使用集成開發(fā)工具(IDE)來進行Java程序開發(fā)的。EclipseJava開發(fā)工具——Eclipse在實際項目開發(fā)過程中,由于使用記事本編寫代碼速度慢,且不容易排錯,所以程序員很少用它來編寫代碼。在本課程中,將使用一種Java常用的IDE集成開發(fā)環(huán)境:EclipseEclipse由IBM開發(fā),功能完整且成熟;開源、可擴展Eclipse具有強大的代碼編排功能,可以幫助程序開發(fā)人員完成語法修正、代碼修正、補全文字、信息提示等編碼工作Eclipse的安裝Eclipse是針對Java編程的集成開發(fā)環(huán)境(IDE),登錄Eclipse官網(wǎng)免費下載。Eclipse安裝時只需將下載好的ZIP包解壓保存到指定目錄下(例如D:\eclipse)就可以使用了。Eclipse的啟動非常簡單,直接在Eclipse安裝文件中運行eclipse.exe文件即可,接下來會出現(xiàn)如下圖所示的啟動界面。Eclipse的使用Eclipse啟動完成后會彈出一個對話框,提示選擇工作空間(Workspace),如下圖所示:工作空間用于保存Eclipse中創(chuàng)建的項目和相關(guān)設(shè)置。此處使用Eclipse提供的默認(rèn)路徑為工作空間,也可以單擊【Browse】按鈕來更改,工作空間設(shè)置完成后,單擊【OK】按鈕即可。

注意:Eclipse每次啟動都會出現(xiàn)選擇工作空間的對話框,如果不想每次都選擇工作空間,可以將此圖【Usethisasthedefaultanddonotaskagain】復(fù)選框選中,這就相當(dāng)于為Eclipse工具選擇了默認(rèn)的工作空間,再次啟動時將不再出現(xiàn)提示對話框。Eclipse的使用在Eclipse歡迎界面單擊關(guān)閉歡迎界面窗口,就進入Eclipse工作臺界面,Eclipse工作臺主要由標(biāo)題欄、菜單欄、工具欄、透視圖四部分組成,如下圖所示:03第一個Java程序的編寫第一個Java程序的編寫通過前面的學(xué)習(xí),讀者對Eclipse開發(fā)工具應(yīng)該有了一個基本的認(rèn)識。接下來通過Eclipse創(chuàng)建一個Java程序,并實現(xiàn)在控制臺上打印“HelloWorld!”,具體步驟如下:新建Java項目在當(dāng)前項目中新建一個包在當(dāng)前包中新建一個Java類在類文件中編寫main()方法,并在方法中編寫一條輸出語句:

System.out.println(“HelloWorld”);01020304運行當(dāng)前的類文件在控制臺查看結(jié)果變量與常量目錄/Contents0102030405Java代碼的基本格式Java中的關(guān)鍵字Java中的常量Java中的變量數(shù)據(jù)類型及類型轉(zhuǎn)換01Java代碼的基本格式Java代碼的基本格式Java中的程序代碼都必須放在一個類中。類需要使用class關(guān)鍵字定義,在class前面可以有一些修飾符,格式如下:注意:(1)Java中的程序代碼可分為結(jié)構(gòu)定義語句和功能執(zhí)行語句,其中,結(jié)構(gòu)定義語句用于聲明一個類或方法,功能執(zhí)行語句用于實現(xiàn)具體的功能。(2)每條功能執(zhí)行語句的最后都必須用分號(;)結(jié)束。(3)Java語言嚴(yán)格區(qū)分大小寫。Java中的標(biāo)識符在編程過程中,經(jīng)常需要在程序中定義一些符號來標(biāo)記一些名稱,如,包名、類名、方法名、參數(shù)名、變量名等,這些符號被稱為標(biāo)識符。標(biāo)識符可以由任意順序的大小寫字母、數(shù)字、下劃線(_)和美元符號($)組成,但不能以數(shù)字開頭,不能是Java中的關(guān)鍵字。定義標(biāo)識符時還應(yīng)該遵循以下規(guī)則:1、包名所有字母一律小寫。例如:cn.itcast.test。2、類名和接口名每個單詞的首字母都要大寫。如:ArrayList、Iterator。3、常量名所有字母都大寫,單詞之間用下劃線連接。例如:DAY_OF_MONTH。4、變量名和方法名的第一個單詞首字母小寫,從第二個單詞開始每個單詞首字母大寫。例如:lineNumber、getLineNumber。5、在程序中,應(yīng)該盡量使用有意義的英文單詞來定義標(biāo)識符,使得程序便于閱讀。例如使用userName表示用戶名,password表示密碼。02Java中的關(guān)鍵字Java中的關(guān)鍵字關(guān)鍵字是編程語言里事先定義好并賦予了特殊含義的單詞,也稱作保留字。和其它語言一樣,Java中保留了許多關(guān)鍵字,例如,class、public等。下面列舉的是Java中所有的關(guān)鍵字。03Java中的常量Java中的常量常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。在Java中,常量包括整型常量、浮點數(shù)常量、布爾常量、字符常量等。整型常量:整數(shù)類型的數(shù)據(jù)。例:125浮點型常量:就是在數(shù)學(xué)中用到的小數(shù),分為float單精度浮點數(shù)和double雙精度浮點數(shù)兩種類型。例:2.36字符常量:用于表示一個字符,用一對單引號(‘’)引起來,它可以是英文字母、數(shù)字、標(biāo)點符號、以及一些特殊字符。例:’k’字符串常量:用于表示一串連續(xù)的字符,一個字符串常量要用一對英文半角格式的雙引號(“”)引起來。”king”布爾常量:即布爾型的兩個值true和false,用于區(qū)分真與假。例:truenull常量:只有一個值null,表示對象的引用為空。04Java中的變量Java中的變量計算機使用內(nèi)存來存儲計算時所使用的數(shù)據(jù)。程序運行期間,隨時可能產(chǎn)生一些臨時數(shù)據(jù),應(yīng)用程序會將這些數(shù)據(jù)保存在一些內(nèi)存單元中,這些內(nèi)存單元我們稱之為變量。每個內(nèi)存單元都用一個標(biāo)識符來標(biāo)識,也就是變量名;內(nèi)存單元中存儲的數(shù)據(jù)就是變量的值。數(shù)據(jù)各式各樣,要先根據(jù)數(shù)據(jù)的類型為它申請一塊合適的空間Java中的變量房間房間名字房間類型入住的客人變量變量名變量類型變量值對應(yīng)變量的聲明語法1

數(shù)據(jù)類型變量名;

變量名=值;

舉例: intage; age=19;語法2

數(shù)據(jù)類型變量名=值;

舉例: intage=19;變量的賦值左下圖第二行代碼的作用就是為變量賦值,在執(zhí)行第二行代碼時,程序首先取出變量x的值,與3相加后,將結(jié)果賦值給變量y,此時變量x和y在內(nèi)存中的狀態(tài)發(fā)生了變化,如圖所示。05數(shù)據(jù)類型及類型轉(zhuǎn)換變量的數(shù)據(jù)類型Java是一門強類型的編程語言,它對變量的數(shù)據(jù)類型有嚴(yán)格的限定。在定義變量時必須聲明變量的類型,在為變量賦值時必須賦予和變量同一種類型的值,否則程序會報錯。變量的數(shù)據(jù)類型1、整數(shù)類型變量用來存儲整數(shù)數(shù)值,即沒有小數(shù)部分的值。整數(shù)類型分為4種不同的類型:字節(jié)型(byte)、短整型(short)、整型(int)和長整型(long)。占用空間指的是不同類型的變量分別占用的內(nèi)存大小取值范圍是變量存儲的值不能超出的范圍為一個long類型的變量賦值時需要注意一點,所賦值的后面要加上一個字母“L”(或小寫“l(fā)”),說明賦值為long類型。變量的數(shù)據(jù)類型2、浮點數(shù)類型變量浮點數(shù)類型變量用來存儲小數(shù)數(shù)值。浮點數(shù)類型分為兩種:單精度浮點數(shù)(float)、雙精度浮點數(shù)(double),double型所表示的浮點數(shù)比float型更精確。在取值范圍中,E表示以10為底的指數(shù),E后面的“+”號和“-”號代表正指數(shù)和負(fù)指數(shù),例如1.4E-45表示1.4*10-45。在為一個float類型的變量賦值時需要注意一點,所賦值的后面一定要加上字母“F”(或“f”),而為double類型的變量賦值時,可以在所賦值的后面加上字符“D”(或“d”),也可不加。在程序中也可以為一個浮點數(shù)類型變量賦予一個整數(shù)數(shù)值.變量的數(shù)據(jù)類型3、字符類型變量用于存儲一個單一字符,在Java中用char表示。每個char類型的字符變量都會占用2個字節(jié)。賦值時,要用英文半角格式的單引號('')把字符括起來,如'a',也可以賦值為0~65535范圍內(nèi)的整數(shù),計算機會自動將這些整數(shù)轉(zhuǎn)化為所對應(yīng)的字符,如數(shù)值97對應(yīng)的字符為'a'。變量的數(shù)據(jù)類型4、布爾類型變量布爾類型變量用來存儲布爾值,在Java中用boolean表示,該類型的變量只有兩個值,即true和false。具體示例如下:數(shù)據(jù)的類型轉(zhuǎn)換當(dāng)把一種數(shù)據(jù)類型的值賦給另一種數(shù)據(jù)類型的變量時,需要進行數(shù)據(jù)類型轉(zhuǎn)換。根據(jù)轉(zhuǎn)換方式的不同,數(shù)據(jù)類型轉(zhuǎn)換可分為兩種:自動類型轉(zhuǎn)換強制類型轉(zhuǎn)換數(shù)據(jù)的類型轉(zhuǎn)換1、自動類型轉(zhuǎn)換也叫隱式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型在轉(zhuǎn)換的過程中不需要顯式地進行聲明。要實現(xiàn)自動類型轉(zhuǎn)換,必須同時滿足兩個條件,第一是兩種數(shù)據(jù)類型彼此兼容,第二是目標(biāo)類型的取值范圍大于源類型的取值范圍。數(shù)據(jù)的類型轉(zhuǎn)換1、自動類型轉(zhuǎn)換整數(shù)類型之間可以實現(xiàn)轉(zhuǎn)換,如byte類型的數(shù)據(jù)可以賦值給short、int、long類型的變量,short、char類型的數(shù)據(jù)可以賦值給int、long類型的變量,int類型的數(shù)據(jù)可以賦值給long類型的變量整數(shù)類型轉(zhuǎn)換為float類型,如byte、char、short、int類型的數(shù)據(jù)可以賦值給float類型的變量。其它類型轉(zhuǎn)換為double類型,如byte、char、short、int、long、float類型的數(shù)據(jù)可以賦值給double類型的變量。數(shù)據(jù)的類型轉(zhuǎn)換2、強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換也叫顯式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型之間的轉(zhuǎn)換需要進行顯式地聲明。當(dāng)兩種類型彼此不兼容,或者目標(biāo)類型取值范圍小于源類型時,自動類型轉(zhuǎn)換無法進行,這時就需要進行強制類型轉(zhuǎn)換。強制類型轉(zhuǎn)換的格式如下所示:Java中的運算符目錄/Contents0102030405算數(shù)運算符賦值運算符比較運算符邏輯運算符運算符的優(yōu)先級01算術(shù)運算符算數(shù)運算符算術(shù)運算符就是用來處理四則運算的符號,這是最簡單、最常用的運算符號。算數(shù)運算符(1)在進行自增(++)和自減(--)的運算時,如果運算符放在操作數(shù)的前面則是先進行自增或自減運算,再進行其它運算。反之,如果運算符放在操作數(shù)的后面則是先進行其它運算再進行自增或自減運算。算術(shù)運算符看上去比較簡單,也很容易理解,但在實際使用時有很多需要注意的問題,具體如下:(2)在進行除法運算時,當(dāng)除數(shù)和被除數(shù)都為整數(shù)時,得到的結(jié)果也是一個整數(shù)。如果除法運算有小數(shù)參與,得到的結(jié)果會是一個小數(shù)。(3)在進行取模(%)運算時,運算結(jié)果的正負(fù)取決于被模數(shù)(%左邊的數(shù))的符號,與模數(shù)(%右邊的數(shù))的符號無關(guān)。02賦值運算符賦值運算符賦值運算符的作用就是將常量、變量或表達式的值賦給某一個變量,表中列出了Java中的賦值運算符及用法。賦值運算符在賦值運算符的使用中,需要注意以下幾個問題:(1)在Java中可以通過一條賦值語句對多個變量進行賦值。(2)除了“=”,其它的都是特殊的賦值運算符,以“+=”為例,x+=3就相當(dāng)于x=x+3,首先會進行加法運算x+3,再將運算結(jié)果賦值給變量x。-=、*=、/=、%=賦值運算符都可依此類推。03比較運算符比較運算符比較運算符用于對兩個數(shù)值或變量進行比較,其結(jié)果是一個布爾值,即true或false。比較運算符在使用時需要注意一個問題,不能將比較運算符“==”誤寫成賦值運算符“=”。04邏輯運算符邏輯運算符邏輯運算符用于對布爾型的數(shù)據(jù)進行操作,其結(jié)果仍是一個布爾型。邏輯運算符在使用邏輯運算符的過程中,需要注意以下幾個細(xì)節(jié):(1)邏輯運算符可以針對結(jié)果為布爾值的表達式進行運算。如:x>3&&y!=0。(2)運算符“&”和“&&”都表示與操作,當(dāng)且僅當(dāng)運算符兩邊的操作數(shù)都為true時,其結(jié)果才為true,否則結(jié)果為false。當(dāng)運算符“&”和“&&”的右邊為表達式時,兩者在使用上還有一定的區(qū)別。在使用“&”進行運算時,不論左邊為true或者false,右邊的表達式都會進行運算。如果使用“&&”進行運算,當(dāng)左邊為false時,右邊的表達式不會進行運算,因此“&&”被稱作短路與。(3)運算符“|”和“||”都表示或操作,當(dāng)運算符兩邊的操作數(shù)任何一邊的值為true時,其結(jié)果為true,當(dāng)兩邊的值都為false時,其結(jié)果才為false。同與操作類似,“||”表示短路或,當(dāng)運算符“||”的左邊為true時,右邊的表達式不會進行運算。(4)運算符“^”表示異或操作,當(dāng)運算符兩邊的布爾值相同時(都為true或都為false),其結(jié)果為false。當(dāng)兩邊布爾值不相同時,其結(jié)果為true。05運算符的優(yōu)先級運算符的優(yōu)先級在對一些比較復(fù)雜的表達式進行運算時,要明確表達式中所有運算符參與運算的先后順序,把這種順序稱作運算符的優(yōu)先級。分支結(jié)構(gòu)-1if語句目錄/Contents010203單分支if語句雙分支if…else…語句多分支if…elseif……else語句01單分支if語句單分支if語句if語句是指如果滿足某種條件,就進行某種處理,其語法格式如下所示:上述語法格式中,判斷條件是一個布爾值,當(dāng)值為true時,才會執(zhí)行{}中的語句。單分支if語句if語句的執(zhí)行流程如下圖所示。02雙分支if…else……語句雙分支if…else……語句if…else語句是指如果滿足某種條件,就進行某種處理,否則就進行另一種處理,其語法格式如下所示:雙分支if…else……語句if…else語句的執(zhí)行流程如下圖所示。雙分支if…else……語句在Java中有一種特殊的運算叫做三元運算,它和if-else語句類似,語法如下:三元運算通常用于對某個變量進行賦值,當(dāng)判斷條件成立時,運算結(jié)果為表達式1的值,否則結(jié)果為表達式2的值。03多分支if…elseif……else語句多分支if…elseif……else語句if…elseif…else語句用于對多個條件進行判斷,進行多種不同的處理,其語法格式如下所示:多分支if…elseif……else語句if…elseif…else語句的執(zhí)行流程如下圖所示:分支結(jié)構(gòu)-2switch語句Switch條件語句switch語句也是一種很常見的選擇語句。和if條件語句不同,它只能針對某個表達式的值做出判斷,從而決定執(zhí)行哪一段代碼。使用switch關(guān)鍵字來描述一個表達式,使用case關(guān)鍵字來描述和表達式結(jié)果比較的目標(biāo)值,當(dāng)表達式的值和某個目標(biāo)值匹配時,會執(zhí)行對應(yīng)case下的語句,switch語句的基本語法見右圖:Switch條件語句例如,在程序中使用數(shù)字1~7表示周一到周日如果想根據(jù)某個輸入的數(shù)字輸出中文格式的星期值,可以通過右邊所示的代碼來實現(xiàn)。Switch條件語句switchcase語句有如下規(guī)則:switch語句中的變量類型可以是:byte、short、int或者char。從JavaSE7開始,switch支持字符串String類型了,同時case標(biāo)簽必須為字符串常量或字面量。switch語句可以擁有多個case語句。每個case后面跟一個要比較的值和冒號。case語句中的值的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型相同,而且只能是常量。當(dāng)變量的值與case語句的值相等時,那么case語句之后的語句開始執(zhí)行,直到break語句出現(xiàn)才會跳出switch語句。當(dāng)遇到break語句時,switch語句終止。程序跳轉(zhuǎn)到switch語句后面的語句執(zhí)行。case語句不必須要包含break語句。如果沒有break語句出現(xiàn),程序會繼續(xù)執(zhí)行下一條case語句,直到出現(xiàn)break語句。switch語句可以包含一個default分支,該分支一般是switch語句的最后一個分支(可以在任何位置,但建議在最后一個)。default在沒有case語句的值和變量值相等的時候執(zhí)行。default分支不需要break語句。循環(huán)結(jié)構(gòu)-1while和do…while…語句目錄/Contents0102while循環(huán)語句do…while…語句03while與do…while…的區(qū)別01while循環(huán)語句while循環(huán)語句while語句和if條件語句有點類似,都是根據(jù)條件判斷來決定是否執(zhí)行后面的代碼,區(qū)別在于,while循環(huán)語句會反復(fù)地進行條件判斷,只要條件成立,{}內(nèi)的執(zhí)行語句就會執(zhí)行,直到條件不成立,while循環(huán)結(jié)束。while循環(huán)語句的語法結(jié)構(gòu)如下所示:while循環(huán)語句while循環(huán)語句的執(zhí)行流程如下圖所示。02do…while…語句do…while…循環(huán)語句do…while循環(huán)語句和while循環(huán)語句功能類似先執(zhí)行一次循環(huán)體,然后在判斷布爾表達式是不是true,如果是就繼續(xù)執(zhí)行循環(huán)體,在判斷布爾表達式,直到為false就結(jié)束循環(huán)。while循環(huán)語句的語法結(jié)構(gòu)如下所示:do…while…循環(huán)語句do…while循環(huán)語句的執(zhí)行流程如下圖所示。03while與do…while…的區(qū)別while與do…while…的區(qū)別while是先判斷在執(zhí)行如果判斷不成立,就不會執(zhí)行;do…while…是先執(zhí)行再判斷,不管判斷是否成立都會執(zhí)行一次inta=8;

while(a<10){

System.out.println(“a的值為:”+a);

}System.out.println(程序結(jié)束”);輸出結(jié)果:程序結(jié)束inta=8;

do{

System.out.println(“a的值為:”+a);

}

while(a<10);System.out.println(程序結(jié)束”);輸出結(jié)果:a的值為8

程序結(jié)束循環(huán)結(jié)構(gòu)-2for語句目錄/Contents0102for循環(huán)語句循環(huán)嵌套語句01for循環(huán)語句for循環(huán)語句for循環(huán)語句是最常用的循環(huán)語句,一般用在循環(huán)次數(shù)已知的情況下,其語法格式如下所示:在上述語法格式中,for后面的()中包括三部分內(nèi)容,初始化表達式、循環(huán)條件和操作表達式,它們之間用“;”分隔,{}中的執(zhí)行語句為循環(huán)體for循環(huán)語句如果用①表示初始化表達式、②表示循環(huán)條件、③表示操作表達式、④表示循環(huán)體,則for循環(huán)的執(zhí)行流程如下所示:02循環(huán)嵌套語句循環(huán)嵌套語句嵌套循環(huán)是指在一個循環(huán)語句的循環(huán)體中再定義一個循環(huán)語句的語法結(jié)構(gòu)。while、do…while、for循環(huán)語句都可以進行嵌套,并且它們之間也可以互相嵌套,如最常見的在for循環(huán)中嵌套for循環(huán),格式如下:循環(huán)結(jié)構(gòu)-3跳轉(zhuǎn)語句目錄/Contents0102break語句continue語句02break與continue的區(qū)別01break語句break語句跳轉(zhuǎn)語句用于實現(xiàn)循環(huán)過程中流程的跳轉(zhuǎn),Java中的跳轉(zhuǎn)語句有break和continue。break語句:直接跳出當(dāng)前循環(huán)體(while、for、dowhile)或程序塊(switch)。其中switch…case…執(zhí)行時,一定會先進行匹配,匹配成功返回當(dāng)前case的值,再根據(jù)是否有break,判斷是否繼續(xù)輸出,或是跳出判斷。一旦執(zhí)行break,整個switch語句立刻結(jié)束。用在循環(huán)語句中時,一旦執(zhí)行,整個循環(huán)結(jié)束。for

(int

i=

0;i<

5;i++){

if

(i==

2){

System.out.println(“跳出for循環(huán)");

break;

}

System.out.println(i);}System.out.println(“程序結(jié)束”);02continue語句continue語句continue語句:用在循環(huán)語句中,它的作用是終止本次循環(huán),執(zhí)行下一次循環(huán)。一旦執(zhí)行,立刻跳過當(dāng)前循環(huán)剩余內(nèi)容,馬上開始下一次循環(huán)。for

(int

i=

0;i<

5;i++){

if

(i==

2){

System.out.println(“跳出本次循環(huán),進行下一次循環(huán)");

continue;

}System.out.println(i);

}

System.out.println(“程序結(jié)束”);

03break與continue的區(qū)別break與continue的區(qū)別前面的例子,運行后的結(jié)果比較:在break測試中,當(dāng)i==2,直接跳出了for循環(huán),不再執(zhí)行之后的循環(huán)測試continue時,當(dāng)i==3,直接跳過了continue之后的輸出語句,進入下一次循環(huán)。因此,break與continue的區(qū)別如下:break是跳出來整個循環(huán),不會再執(zhí)行接下來的循環(huán)。continue至少跳過一次循環(huán),后面的循環(huán)如果滿足條件,依舊會執(zhí)行。方法情境引入需求:假設(shè)有一個游戲程序,程序在運行過程中,要不斷地發(fā)射炮彈。發(fā)射炮彈的動作需要編寫100行的代碼,在每次實現(xiàn)發(fā)射炮彈的地方都需要重復(fù)地編寫這100行代碼,這樣程序會變得很臃腫,可讀性也非常差。方法概述情境引入為了解決代碼重復(fù)編寫的問題,可以將發(fā)射炮彈的代碼提取出來,放在一個{}中,并為這段代碼起個名字,這樣在每次發(fā)射炮彈的地方通過這個名字來調(diào)用發(fā)射炮彈的代碼就可以了。上述過程中,所提取出來的代碼可以被看作是程序中定義的一個方法,程序在需要發(fā)射炮彈時調(diào)用該方法即可。方法概述方法的定義及格式完成特定功能的一段代碼方法:修飾符返回值類型方法名(參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2…){

方法體; return返回值;}格式:方法格式的解釋說明修飾符

publicstatic返回值類型

用于限定返回值的數(shù)據(jù)類型方法名

一個名稱要符合命名規(guī)則,用于調(diào)用方法參數(shù)類型

限定調(diào)用方法時傳入?yún)?shù)的數(shù)據(jù)類型方法格式的解釋說明參數(shù)名

一個變量名,接收調(diào)用方法時傳入的參數(shù)方法體

完成功能的代碼return

結(jié)束方法以及返回方法指定類型的值

返回值

由return帶回的結(jié)果,返回給調(diào)用者方法案例返回值類型明確功能結(jié)果的數(shù)據(jù)類型參數(shù)列表明確有幾個參數(shù),以及參數(shù)的類型如何寫一個方法呢?兩個明確案例:求兩個整型數(shù)據(jù)之和有返回值的方法練習(xí)練習(xí)一:鍵盤錄入兩個數(shù)據(jù),返回兩個數(shù)中的較大值練習(xí)二:鍵盤錄入兩個數(shù)據(jù),比較兩個數(shù)是否相等有返回值的方法調(diào)用單獨調(diào)用,沒有意義輸出調(diào)用,有意義,但不推薦,因為不一定需要把結(jié)果輸出賦值調(diào)用,推薦方式方法注意事項方法不調(diào)用不執(zhí)行方法與方法是平級關(guān)系,不能嵌套定義方法定義的時候參數(shù)之間用逗號隔開方法調(diào)用的時候不用再傳遞數(shù)據(jù)類型如果方法有明確的返回值,一定要有return帶回一個值沒有返回值的方法調(diào)用沒有返回值的方法就是返回值類型為void的方法只能單獨調(diào)用返回值為void類型的方法練習(xí)練習(xí)一:鍵盤錄入行數(shù)和列數(shù),輸出對應(yīng)的星形練習(xí)二:鍵盤錄入一個數(shù)據(jù)n(1<=n<=9),輸出對應(yīng)的nn乘法表方法的重載在同一個類中,允許存在一個以上的同名方法,只要它們的參數(shù)個數(shù)或者參數(shù)類型不同即可。方法重載概述方法重載方法重載方法重載特點與返回值類型無關(guān),只看方法名和參數(shù)列表在調(diào)用時,虛擬機通過參數(shù)列表的不同來區(qū)分同名方法方法重載案例比較兩個數(shù)據(jù)是否相等。參數(shù)類型分別為兩個byte類型,兩個short類型,兩個int類型,兩個long類型,并在main方法中進行測試方法重載數(shù)組一維數(shù)組情境引入數(shù)組概述需求:現(xiàn)在需要統(tǒng)計某班級學(xué)生的《Java程序設(shè)計》課程成績情況,例如計算該門課程的平均成績、找到最高分等。假設(shè)該班級有50名學(xué)生。intstu1=95;intstu2=89;intstu3=79;intstu4=64;intstu5=76;intstu6=88;……avg=(stu1+stu2+stu3+stu4+stu5…+stu50)/5050個變量50個變量太繁瑣數(shù)組概述數(shù)組概念數(shù)組是存儲同一種數(shù)據(jù)類型多個元素的集合。也可以看成是一個容器。數(shù)組既可以存儲基本數(shù)據(jù)類型,也可以存儲引用數(shù)據(jù)類型。數(shù)組概念數(shù)組定義格式格式1:數(shù)據(jù)類型[]數(shù)組名;格式2:數(shù)據(jù)類型數(shù)組名[];數(shù)組初始化Java中的數(shù)組必須先初始化,然后才能使用。所謂初始化:就是為數(shù)組中的數(shù)組元素分配內(nèi)存空間,并為每個數(shù)組元素賦值。數(shù)組初始化數(shù)組的初始化方式動態(tài)初始化:初始化時只指定數(shù)組長度,由系統(tǒng)為數(shù)組分配初始值。靜態(tài)初始化:初始化時指定每個數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度。數(shù)組初始化數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[數(shù)組長度];格式:創(chuàng)建數(shù)組對象int[]arrs=newint[3];解釋:定義了一個int類型的數(shù)組,數(shù)組名稱為arrs,這個數(shù)組中可以存放3個int類型的值。示例1:動態(tài)初始化:初始化時只指定數(shù)組長度,由系統(tǒng)為數(shù)組分配初始值。數(shù)組長度其實就是數(shù)組中元素的個數(shù)數(shù)組元素的獲取數(shù)組名[索引]索引其實就是每個元素的編號,從0開始,最大索引是數(shù)組的長度-1。格式:Java中的內(nèi)存分配Java程序在運行時,需要在內(nèi)存中的分配空間。為了提高運算效率,就對空間進行了不同區(qū)域的劃分,因為每一片區(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存管理方式。Java中的內(nèi)存分配棧堆方法區(qū)本地方法區(qū)寄存器存儲局部變量存儲new關(guān)鍵字創(chuàng)建的對象面向?qū)ο蟛糠种v和系統(tǒng)相關(guān)給CPU使用Java中的內(nèi)存圖解數(shù)組元素默認(rèn)值數(shù)據(jù)類型默認(rèn)初始化值byte,short,int,long0float,double0.0char‘\u0000’booleanfalse引用類型null數(shù)組的賦值定義一個數(shù)組,輸出該數(shù)組元素值。給數(shù)組元素賦值,再次輸出該數(shù)組元素值。示例2:數(shù)組元素的賦值數(shù)組的賦值定義第一個數(shù)組,定義完畢后,給數(shù)組元素賦值。賦值完畢后,在輸出數(shù)組名稱和元素。定義第二個數(shù)組,定義完畢后,給數(shù)組元素賦值。賦值完畢后,在輸出數(shù)組名稱和元素。定義第三個數(shù)組,把第一個數(shù)組的地址值賦值給它。(注意類型一致),通過第三個數(shù)組的名稱去把元素重復(fù)賦值。最后,再次輸出第一個數(shù)組數(shù)組名稱和元素。示例22:數(shù)組地址賦值數(shù)組初始化數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[]{元素1,元素2,…};格式:int[]arr=newint[]{1,2,3};解釋:定義了一個int類型的數(shù)組,這個數(shù)組中可以存放3個int類型的值,并且值分別是1,2,3。簡化的寫法int[]arr={1,2,3};示例3:靜態(tài)初始化:初始化時指定每個數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度。數(shù)組操作常見的兩個問題數(shù)組索引越界常見問題ArrayIndexOutOfBoundsException訪問了數(shù)組中不存在的索引。空指針異常NullPointerException數(shù)組引用沒有指向?qū)嶓w,卻在操作實體中的元素。示例4:在程序中演示數(shù)組的常用操作依次輸出數(shù)組中的每一個元素數(shù)組的遍歷根據(jù)鍵盤錄入索引,查找對應(yīng)星期數(shù)組查表法獲取數(shù)組中的最大值最小值數(shù)組獲取最值查找指定元素在數(shù)組中第一次出現(xiàn)的索引數(shù)組元素查找數(shù)組常用操作數(shù)組二維數(shù)組情境引入二維數(shù)組概述需求:我們計算機軟件技術(shù)專業(yè)每個班有很多個學(xué)生,所以,可以用數(shù)組來存儲,而我們又同時有很多個班。這個也應(yīng)該用一個數(shù)組來存儲。如何來表示這樣的數(shù)據(jù)呢?Java就提供了二維數(shù)組供我們使用。二維數(shù)組其實就是一個元素為一維數(shù)組的數(shù)組。數(shù)據(jù)類型[][]變量名=new數(shù)據(jù)類型[m][n];m表示這個二維數(shù)組有多少個一維數(shù)組n表示每一個一維數(shù)組的元素個數(shù)格式1:二維數(shù)組定義格式二維數(shù)組定義格式舉例:int[][]arr=newint[3][2];定義了一個二維數(shù)組arr這個二維數(shù)組有3個一維數(shù)組,名稱是arr[0],arr[1],arr[2]每個一維數(shù)組有2個元素,可以通過arr[m][n]來獲取,表示獲取第m+1個一維數(shù)組的第n+1個元素int[][]arr=newint[3][];arr[0]=newint[2];arr[1]=newint[3]arr[2]=newint[1];舉例:二維數(shù)組定義格式數(shù)據(jù)類型[][]變量名=new數(shù)據(jù)類型[m][];m表示這個二維數(shù)組有多少個一維數(shù)組沒有直接給出一維數(shù)組元素個數(shù),可動態(tài)給出格式2:格式3:二維數(shù)組定義格式簡化版格式:舉例:數(shù)據(jù)類型[][]變量名=new數(shù)據(jù)類型[][]{{元素…},{元素…},{元素…}};數(shù)據(jù)類型[][]變量名={{元素…},{元素…},{元素…}};int[][]arr={{1,2,3},{4,5},{6}};公司年銷售額求和某公司按照季度和月份統(tǒng)計的數(shù)據(jù)如下:單位(萬元)第一季度:22,66,44第二季度:77,33,88第三季度:25,45,65第四季度:11,66,99二維數(shù)組遍歷——練習(xí)類與對象類與對象關(guān)系

我們學(xué)習(xí)編程語言,就是為了模擬現(xiàn)實世界的事物,實現(xiàn)信息化。比如:去超市買東西的計費系統(tǒng),去銀行辦業(yè)務(wù)的系統(tǒng)。類與對象關(guān)系

我們?nèi)绾伪硎疽粋€現(xiàn)實世界事物呢?屬性就是該事物的描述信息行為就是該事物能夠做什么

舉例:學(xué)生事物類與對象關(guān)系一組相關(guān)的屬性和行為的集合類:該類事物的具體體現(xiàn)對象:類

學(xué)生對象學(xué)生張三舉例:類的定義現(xiàn)實世界的事物屬性

人的身高,體重等行為

人可以學(xué)習(xí),吃飯等Java中用class描述事物成員變量

就是事物的屬性成員方法

就是事物的行為定義類——定義類的成員成員變量成員方法)類與對象案例學(xué)生類(講解):手機類(學(xué)生練習(xí))如何定義按照事物到類的過程一步步分析如何使用創(chuàng)建對象:類名對象名=new類名();對象名.成員變量對象名.成員方法對象內(nèi)存圖一個對象的基本初始化過程一個對象的內(nèi)存圖類與對象成員變量、局部變量與構(gòu)造方法成員變量與局部變量的區(qū)別成員變量

類中方法外局部變量

方法內(nèi)或者方法聲明上在類中的位置不同成員變量

隨著對象的存在而存在,隨著對象的消失而消失局部變量隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失生命周期不同成員變量

堆內(nèi)存局部變量

棧內(nèi)存在內(nèi)存中的位置不同成員變量

有默認(rèn)的初始化值局部變量

沒有默認(rèn)的初始化值,必須先定義,賦值,才能使用。初始化值不同成員變量和局部變量的區(qū)別構(gòu)造方法給對象的數(shù)據(jù)進行初始化作用:方法名與類名相同沒有返回值類型,連void都沒有沒有具體的返回值格式:構(gòu)造方法如果你不提供構(gòu)造方法,系統(tǒng)會給出默認(rèn)構(gòu)造方法如果你提供了構(gòu)造方法,系統(tǒng)將不再提供構(gòu)造方法也是可以重載的注意事項:一個基本類的標(biāo)準(zhǔn)代碼寫法

類成員變量構(gòu)造方法無參構(gòu)造方法帶參構(gòu)造方法成員方法getXxx()setXxx()給成員變量賦值的方式無參構(gòu)造方法+setXxx()帶參構(gòu)造方法一個基本類的標(biāo)準(zhǔn)代碼案例標(biāo)準(zhǔn)的學(xué)生類(講解)加入一個方法show(),輸出學(xué)生對象的成員變量信息。標(biāo)準(zhǔn)的手機類(練習(xí))注意目前的代碼是為了練習(xí)的一種標(biāo)準(zhǔn)格式給成員變量賦值有兩種方式,可以只寫一種如果不單獨獲取數(shù)據(jù),可以不寫getXxx()方法類的初始化過程Students=newStudent();在內(nèi)存中做了哪些事情?加載Student.class文件進內(nèi)存在棧內(nèi)存為s開辟空間在堆內(nèi)存為學(xué)生對象開辟空間對學(xué)生對象的成員變量進行默認(rèn)初始化對學(xué)生對象的成員變量進行顯示初始化通過構(gòu)造方法對學(xué)生對象的成員變量賦值學(xué)生對象初始化完畢,把對象地址賦值給s變量面向?qū)ο缶毩?xí)練習(xí)1:定義一個類Demo,其中定義一個求兩個數(shù)據(jù)和的方法,定義一個測試了Test,進行測試。練習(xí)2:定義一個長方形類,定義求周長和面積的方法,然后定義一個測試了Test2,進行測試。練習(xí)3:定義一個員工類,自己分析出幾個成員,然后給出成員變量,構(gòu)造方法,getXxx()/setXxx()方法,以及一個顯示所有成員信息的方法。并測試。練習(xí)4:定義一個類MyMath,提供基本的加減乘除功能,然后進行測試。封裝封裝概述隱藏對象的屬性和實現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式封裝:提高代碼的復(fù)用性。提高程序的安全性。好處:將不需要對外提供的內(nèi)容都隱藏起來。把屬性隱藏,提供公共方法對其訪問。原則:private關(guān)鍵字一個權(quán)限修飾符??尚揎棾蓡T(成員變量和成員方法)被private修飾的成員只在本類中才能訪問。private關(guān)鍵字:把成員變量用private修飾提供對應(yīng)的getXxx()/setXxx()方法private的應(yīng)用:案例演示this關(guān)鍵字代表所在類的對象引用this:局部變量名稱與成員變量名稱沖突什么時候使用this呢?static關(guān)鍵字可以修飾成員變量和成員方法static:

隨著類的加載而加載優(yōu)先于對象存在被類的所有對象共享判斷是否使用靜態(tài)關(guān)鍵字的條件可以通過類名調(diào)用特點:static關(guān)鍵字

在靜態(tài)方法中是沒有this關(guān)鍵字的靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法注意事項:靜態(tài)的內(nèi)存圖靜態(tài)的內(nèi)容存在于方法區(qū)的靜態(tài)區(qū)靜態(tài)變量和成員變量的區(qū)別所屬不同靜態(tài)變量屬于類,所以也稱為為類變量成員變量屬于對象,所以也稱為實例變量(對象變量)內(nèi)存中位置不同靜態(tài)變量存儲于方法區(qū)的靜態(tài)區(qū)成員變量存儲于堆內(nèi)存內(nèi)存出現(xiàn)時間不同

靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失

成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失調(diào)用不同

靜態(tài)變量可以通過類名調(diào)用,也可以通過對象調(diào)用

成員變量只能通過對象名調(diào)用代碼塊局部代碼塊

聲明在方法中;限定變量的作用域;用于提高內(nèi)存利用率構(gòu)造代碼塊

聲明在類中方法外;每次調(diào)用構(gòu)造方法前,都會先執(zhí)行構(gòu)造代碼塊。作用:可以把多個構(gòu)造方法中的共同代碼放到一起,對對象進行初始化。靜態(tài)代碼塊

聲明在類中方法外,并加上static修飾;用于給類進行初始化,在類加載的時候就執(zhí)行,并且只執(zhí)行一次。同步代碼塊代碼塊:使用{}括起來的代碼根據(jù)其位置和聲明的不同,可以分為代碼塊——課堂練習(xí)先看程序,再寫程序的執(zhí)行結(jié)果。classStudent{ static{ System.out.println("Student靜態(tài)代碼塊"); }

{ System.out.println("Student構(gòu)造代碼塊"); }

publicStudent(){ System.out.println("Student構(gòu)造方法"); }}代碼塊——課堂練習(xí)先看程序,再寫程序的執(zhí)行結(jié)果。classStudentDemo{ static{ System.out.println("我是StudentDemo類中的靜態(tài)代碼塊"); }

publicstaticvoidmain(String[]args){ System.out.println("我是main方法");

Students1=newStudent(); Students2=newStudent(); }}第4章面向?qū)ο缶幊汤^承情境引入我們在做事情的時候,如果在現(xiàn)有一定基礎(chǔ)之上再創(chuàng)作新的內(nèi)容,就會比較輕松一些。

在程序開發(fā)中,我們怎樣才能提高代碼的可重用性,從而達到提高效率的目的呢?生活中的繼承生活中,繼承的例子隨處可見167動物食草動物食肉動物誰是父類?誰是子類?能說出繼承的特點嗎?繼承需要符合的關(guān)系:父類更通用、子類更具體生活中的繼承子類具有父類的一般特性(包括屬性和行為),以及自身特殊的特性168巴士是汽車嗎?卡車是汽車嗎?出租車是汽車嗎?最大載客數(shù)量報站引擎數(shù)量外觀顏色剎車加速汽車最大載重量卸貨所屬公司最大載客數(shù)量打發(fā)票屬性行為請問:出租車包含哪些屬性和行為呢?為什么需要繼承?開發(fā)教師類,其中教師分為Java教師以及.NET教師,各自的要求如下:Java教師屬性:姓名、所屬教研室方法:授課(步驟:打開Eclipse、實施理論課授課)、自我介紹.NET教師屬性:姓名、所屬教研室方法:授課(步驟:打開Visualstudio2005、實施理論課授課)、自我介紹169請問:以下這個解決方案中存在著什么問題?170publicclassDotNetTeacher{privateStringname;//教師姓名privateStringdepartment;//教研室publicDotNetTeacher(StringmyName,StringmyDepat){name=myName;department=myDepart;}publicvoidgiveLession(){System.out.println("啟動VisualStudio2005");System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是" +department+"的"+name+".");}}publicclassJavaTeacher{privateStringname;//教師姓名privateStringdepartment;//教研室publicJavaTeacher(StringmyName,StringmyDepart){name=myName;department=myDepart;}publicvoidgiveLession(){System.out.println("啟動

Eclipse");System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是" +department+"的"+name+".");}}代碼存在重復(fù),違背了“writeonce,onlyonce”的原則如何改進?有沒有可能建立繼承關(guān)系,讓子類自動繼承父類的屬性和方法?171Java教師是教師嗎?.NET教師是教師嗎?publicclassTeacher{privateStringname;//教師姓名privateStringdepartment;//教研室publicTeacher(StringmyName,StringmyDepart){name=myName;department=myDepart;}publicvoidgiveLesson(){System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是“

+department+"的"+name+"。");}}現(xiàn)在,所有子類中相同的代碼都抽取到父類中了屬

性行

為姓名教研室授課自我介紹教師Java教師.NET教師為什么需要繼承4-4172publicclassJavaTeacher2extendsTeacher{publicJavaTeacher2(StringmyName,StringmyDepart){super(myName,myDepart);}publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}publicclassDotNetTeacher2extendsTeacher{publicDotNetTeacher2(StringmyName,StringmyDepart){super(myName,myDepart);}publicvoidgiveLesson(){System.out.println("啟動VisualStudio.NET");super.giveLesson();}}使用繼承,可以有效實現(xiàn)代碼復(fù)用子類自動繼承父類的屬性和方法,子類中不再存在重復(fù)代碼如何實現(xiàn)繼承?在Java語言中,用extends關(guān)鍵字來表示一個類繼承了另一個類,例如:173publicclassJavaTeacher2

extends

AccpTeacher{//其余代碼省略}在父類中只定義一些通用的屬性與方法,例如:publicclassTeacher{privateStringname;//教師姓名privateStringdepartment;//所在教研室publicTeacher(StringmyName,StringmyDepart){//初始化屬性值}publicvoidgiveLesson(){//授課方法的具體實現(xiàn)}publicvoidintroduction(){//自我介紹方法的具體實現(xiàn)

}}如何實現(xiàn)繼承子類自動繼承父類的屬性和方法,子類中可以定義特定的屬性和方法174publicclassTeacher{Stringname;//教師姓名Stringdepartment;//所在教研室publicTeacher(StringmyName,StringmyDepart){//初始化屬性值}publicvoidgiveLesson(){ //授課方法的具體實現(xiàn)}publicvoidintroduction(){ //自我介紹方法的具體實現(xiàn)

}}publicclassJavaTeacher2extendsTeacher{publicJavaTeacher2(StringmyName,StringmyDepart){super(myName,myDepart);}publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}由于giveLesson()方法與父類的實現(xiàn)有所不同,因此重寫了該方法方法重寫:子類和父類的方法具有相同的名稱、參數(shù)列表、返回類型父類中的屬性和方法可以被子類繼承如何實現(xiàn)繼承?子類的構(gòu)造方法中,通過super關(guān)鍵字調(diào)用父類的構(gòu)造方法175publicclassJavaTeacher2extendsTeacher{publicJavaTeacher2(StringmyName,StringmyDepart){super(myName,myDepart);}}方法重寫后,通過super關(guān)鍵字調(diào)用父類的方法publicclassJavaTeacher2extendsTeacher{publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}通過調(diào)用父類的構(gòu)造方法,完成對屬性值的初始化一切類的“祖先”——Object在Java中,所有的Java類都直接或間接地繼承了java.lang.Object類176publicclassMyObject{//…}publicclassMyObectextends

Object{

//…}在Eclipse中調(diào)用MyObject對象的成員,會自動彈出繼承自O(shè)bject的所有方法小結(jié)1請編碼實現(xiàn)動物世界的繼承關(guān)系:動物(Animal)具有行為:吃(eat)、睡覺(sleep)動物包括:兔子(Rabbit),老虎(Tiger)這些動物吃的行為各不相同(兔子吃草,老虎吃肉);但睡覺的行為是一致的。請通過繼承實現(xiàn)以上需求,并編寫測試類AnimalTest進行測試。177感謝觀看方法重載與方法重寫情境引入在生活中,其實我們經(jīng)常遇到方法重載的情況,例如:同一臺打印機,既可以打印黑白照片,也可以打印彩色照片……生活中的方法重載181類方法方法參數(shù)方法實現(xiàn)司機轎車巴士火車駕駛啟動、行駛、……等待乘客上車、啟動、行駛、到站停車、……正點發(fā)車、行駛、到站停車、……如果用代碼實現(xiàn),我們需要三個方法,這些方法的方法名稱相同,參數(shù)類型不同方法重載的代碼示例1方法重載并不陌生java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實現(xiàn)方式182publicclassTest{publicstaticvoidmain(String[]args){inti=0;charc='z';Stringstr="hello";System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,參數(shù)類型不同調(diào)用不同的println方法方法重載方法重載的代碼示例2java.lang.Math類的max()方法能夠從兩個數(shù)字中取出最大值,它有多種實現(xiàn)方式運行時,Java虛擬機先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個max()方法183Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);}}方法重載構(gòu)造方法重載2-1構(gòu)造方法重載是方法重載的典型示例184publicclassTeacher7{privateStringname;//教師姓名privateStringdepartment=“軟件教研室”;//所在教研室PublicTeacher7(Stringname){ =name;//設(shè)定教師姓名}publicTeacher7(Stringname,Stringdepartment){=name;//設(shè)定教師姓名this.department=department;//設(shè)定教師教研室}publicStringintroduction(){ return"大家好!我是"+department

+"的"+name;}}構(gòu)造方法重載構(gòu)造方法重載2-2通過調(diào)用不同的構(gòu)造方法來表達對象的多種初始化行為例如:默認(rèn)情況下,教師來自軟件教研室,初始化時,只需提供教師姓名有時,需要提供所在教研室名稱及教師姓名185publicclassTeacher7Test{publicstaticvoidmain(String[]args){Teacher7teacher1=newTeacher7("李芳");System.out.println(roduction());Teacher7teacher2=newTeacher7("張欣",

“網(wǎng)絡(luò)教研室");System.out.println(roduction());}}大家好!我是軟件教研室的李芳大家好!我是網(wǎng)絡(luò)教研室的張欣方法的重載(overload)在同一個類中,一個以上的方法名稱相同,參數(shù)列表不同,這種定義方法叫做方法的重載。

186例如:

publicintsummn(intm,intn){returnm+n;}publicintsummn(intm,intn,intk){returnm+n+k;}187例如:

publicintsummn(intm,intn){returnm+n;}publicintsummn(intx,inty){returnx+y;}//是重載嗎?188不是方法的重寫在子類中,聲明和父類中完全相同(方法名字、參數(shù)類型、個數(shù)和順序、返回值類型)的方法,叫做方法的重寫。方法的重載和方法的重寫,都是實現(xiàn)類的多態(tài)性的重要途徑。

189重寫隱藏了父類中的同名成員。如果子類中成員m是重寫的,則在子類中訪問m時,訪問的是子類中的,而不是父類中的m。190方法重寫示例:

classVehicle{voidrun(){System.out.println("Vehicleisrunning");}}classBikeextendsVehicle{ @override voidrun(){ System.out.println("theBikeofVehicleisrunning"); }publicstaticvoidmain(Stringargs[]){Bikeobj=newBike();obj.run();}}191

輸出結(jié)果:theBikeofVehicleisrunning訪問被重寫的方法:

有時,需要在子類中訪問父類中被重寫的方法,可使用super關(guān)鍵字來實現(xiàn)。

super代表當(dāng)前類的直接父類。

192//定義Animal類classAnimal{ Stringname="動物";

voidshout(){//定義動物叫的方法 System.out.println("動物發(fā)出叫聲"); }}classDogextendsAnimal{//定義Dog類繼承動物類 Stringname="犬類";

voidshout(){//重寫父類的shout()方法

super.shout();//訪問父類的成員方法

}193

//定義打印name的方法

voidprintName(){ System.out.println("name="+);//訪問父類的成員變量

}}//定義測試類publicclassExample03{ publicstaticvoidmain(String[]args){ Dogdog=newDog();//創(chuàng)建一個Dog對象

dog.shout();//調(diào)用dog對象重寫的shout()方法

dog.printName();//調(diào)用dog對象的的printName()方法

}}194動物發(fā)出叫聲name=動物使用super關(guān)鍵字訪問父類的構(gòu)造方法:

super([參數(shù)1,參數(shù)2…])//定義Animal類classAnimal{ //定義Animal類有參的構(gòu)造方法

publicAnimal(Stringname){ System.out.println("我是一只"+name); }}//定義Dog類繼承Animal類classDogextendsAnimal{ publicDog(){ super("沙皮狗");//調(diào)用父類有參的構(gòu)造方法

}}195//定義測試類publicclassExample04{ publicstaticvoidmain(String[]args){ Dogdog=newDog();//實例化子類Dog對象

}}196final關(guān)鍵字final關(guān)鍵字有“無法改變”或者“最終”的含義,因此被final修飾的類、變量和方法將具有以下特性:final修飾的類不能被繼承。final修飾的方法不能被子類重寫。final修飾的變量(成員變量和局部變量)是常量,只能賦值一次。197final關(guān)鍵字修飾類finalclassAnimal{//使用final關(guān)鍵字修飾Animal類時,子類會報錯classAnimal{ //方法體為空}classDogextendsAnimal{//Dog類繼承Animal類 //方法體為空}classExample06{//定義測試類 publicstaticvoidmain(String[]args){ Dogdog=newDog();//創(chuàng)建Dog類的實例對象 }}198final關(guān)鍵字修飾變量classAnimal{

//使用final關(guān)鍵字修飾shout()方法后,如果子類重寫父類的這個方法,編譯會報錯

//publicfinalvoidshout(){ publicvoidshout(){ //程序代碼}}//定義Dog類繼承Animal類classDogextendsAnimal{ //重寫Animal類的shout()方法

publicvoidshout(){ //程序代碼

}}199//定義測試類classExample07{ publicstaticvoidmain(String[]args){ Dogdog=newDog();//創(chuàng)建Dog類的實例對象

}}感謝觀看抽象類情境引入:

當(dāng)定義一個類時,常常需要定義一些方法來描述該類的行為特征,但有時這些方法的實現(xiàn)方式是無法確定的。例如當(dāng)我們定義Animal類時,shout()方法用于表示動物的叫聲,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論