版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java程序設(shè)計(jì)教程(第2版)全套可編輯PPT課件Java概述01Java的產(chǎn)生與發(fā)展02Java的特點(diǎn)CONTENTS目錄1Java的產(chǎn)生與發(fā)展Java的產(chǎn)生與發(fā)展Sun公司開(kāi)發(fā)了一種面向?qū)ο笳Z(yǔ)言,命名Oak。19911995.5Sun公司正式發(fā)Java語(yǔ)言。1996.1Sun公司發(fā)布了第一個(gè)開(kāi)發(fā)工具包JDK1.0。1997.2Sun公司發(fā)布了JDK1.1。1998.12Sun公司發(fā)布了發(fā)布了JDK1.2。Sun公司發(fā)布了JavaSE6。2005.6時(shí)間軸Java的產(chǎn)生與發(fā)展Java主要技術(shù)分支Java2J2SEJ2EEJ2MEJavaSEJavaEEJavaMEJava標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用程序的開(kāi)發(fā)。企業(yè)版,主要用于企業(yè)級(jí)分布式的網(wǎng)絡(luò)程序。微型版,主要用于嵌入式系統(tǒng)的開(kāi)發(fā)。核心2Java的特點(diǎn)Java的特點(diǎn)總的來(lái)說(shuō),Java語(yǔ)言具有以下特點(diǎn):(1)Java語(yǔ)言是簡(jiǎn)單的。(2)Java語(yǔ)言是面向?qū)ο蟮?。?)Java語(yǔ)言是分布式的。(4)Java語(yǔ)言是解釋執(zhí)行的。(5)Java語(yǔ)言是可移植的。(6)Java語(yǔ)言是安全的。(7)Java語(yǔ)言是健壯的。(8)Java語(yǔ)言是多線程的。(9)Java語(yǔ)言是高性能的。(10)Java語(yǔ)言是動(dòng)態(tài)的。第一個(gè)Java程序01最簡(jiǎn)單的Java程序結(jié)構(gòu)02Java的編程規(guī)范03Java程序的開(kāi)發(fā)流程04總結(jié)CONTENTS目錄1最簡(jiǎn)單的Java程序結(jié)構(gòu)最簡(jiǎn)單的Java程序結(jié)構(gòu)/*Welcome.java*/publicclassWelcome{publicstaticvoidmain(Stringargs[]){ //輸出字符串System.out.println("歡迎學(xué)習(xí)Java語(yǔ)言!"); }}“/*”和“*/”是Java語(yǔ)言的多行注釋信息class用來(lái)定義一個(gè)新的類(lèi),其類(lèi)名是Welcome,它是一個(gè)公共類(lèi)(public)整個(gè)類(lèi)定義用大括號(hào){}括起來(lái),其內(nèi)部稱(chēng)為類(lèi)體1.public用于表示訪問(wèn)權(quán)限;2.static表示該方法是一個(gè)靜態(tài)方法;3.void表示main()沒(méi)有返回值;4.Stringargs[]為main()傳入的參數(shù),一般是通過(guò)命令傳入的參數(shù);5.main()為Java程序的入口,并且創(chuàng)建main()只能按照固定寫(xiě)法,否則不能作為Java程序的入口。雙斜線“//”后面的內(nèi)容是Java語(yǔ)言的單行注釋信息System表示系統(tǒng)類(lèi),out是PrintStream類(lèi)的對(duì)象,println是out對(duì)象的方法,其功能是輸出“”里面的內(nèi)容并換行2Java的編程規(guī)范Java的編碼規(guī)范1.代碼注釋代碼注釋是對(duì)程序中的代碼進(jìn)行解釋說(shuō)明,是程序的非執(zhí)行部分。在程序代碼中適當(dāng)?shù)靥砑幼⑨專(zhuān)梢蕴岣叱绦虻目勺x性和可維護(hù)性。Java語(yǔ)言提供了3種添加注釋的方法,分別是單行注釋、多行注釋和文檔注釋。(1)單行注釋標(biāo)記為“//”
例如://輸出一句話(2)多行注釋標(biāo)記為“/**/”
例如:/*
開(kāi)發(fā)人員:張某某
修改人員:李某某*/
(3)文檔注釋標(biāo)記為“/***/”例如:/***參數(shù)1:name姓名*參數(shù)2:age年齡*/Java的編碼規(guī)范2.空格和空行Java的編碼規(guī)范3.縮進(jìn)在Java中代碼塊最好使用4個(gè)空格進(jìn)行懸掛式縮進(jìn),并且同一級(jí)別的代碼塊的縮進(jìn)量盡量相同。類(lèi)、方法、條件語(yǔ)句及循環(huán)語(yǔ)句中的代碼都采用縮進(jìn)方式。例如:
提示:如果使用Tab鍵縮進(jìn),在代碼編輯器中可將1個(gè)Tab鍵視為4個(gè)空格。Java的編碼規(guī)范4.換行Java每行代碼的長(zhǎng)度最好不要超過(guò)120個(gè)字符。對(duì)于過(guò)長(zhǎng)的代碼,建議進(jìn)行換行。
沒(méi)有換行有換行3Java程序的開(kāi)發(fā)流程Java程序的開(kāi)發(fā)流程需求分析算法設(shè)計(jì)編寫(xiě)程序編譯程序運(yùn)行程序編寫(xiě)程序文檔分析代碼是做什么的,輸入的參數(shù)是什么,輸出的參數(shù)是什么對(duì)要解決的問(wèn)題設(shè)計(jì)出解決問(wèn)題的方法和具體步驟。用Java語(yǔ)言編寫(xiě)代碼,實(shí)現(xiàn)需求分析和算法設(shè)計(jì)的功能用Java的編譯器,將寫(xiě)好的代碼,編譯成為計(jì)算機(jī)所能識(shí)別的,能夠運(yùn)行的二進(jìn)制文件將編譯好的二進(jìn)制文件運(yùn)行,真正能夠處理需求分析所提出的問(wèn)題編寫(xiě)用戶的使用說(shuō)明書(shū)4總結(jié)總結(jié)1.最簡(jiǎn)單的Java程序的基本結(jié)構(gòu)注釋類(lèi)的定義main()方法main()方法中的內(nèi)容2.編碼規(guī)范代碼注釋、空格和空行、縮進(jìn)、換行3.Java程序的開(kāi)發(fā)流程需求分析->算法設(shè)計(jì)->編寫(xiě)程序->編譯程序->運(yùn)行程序->編寫(xiě)程序文檔搭建Java開(kāi)發(fā)環(huán)境01下載和安裝JDK02配置JDK的環(huán)境變量03開(kāi)發(fā)簡(jiǎn)單Java程序04課后作業(yè)CONTENTS目錄1下載和安裝JDK下載和安裝JDK1.下載/java/technologies/javase-downloads.html下載和安裝JDK2.安裝2配置JDK的環(huán)境變量配置JDK的環(huán)境變量配置JAVA的環(huán)境變量
3.配置環(huán)境變量
溫馨提示:在配置Path變量時(shí),所添加的路徑要放在最前面,因?yàn)槠渌浖ㄓ绕涫荗racle)也可能會(huì)對(duì)Path變量進(jìn)行配置,而這種配置可能會(huì)對(duì)JDK的配置產(chǎn)生影響。配置JDK的環(huán)境變量3開(kāi)發(fā)簡(jiǎn)單Java程序開(kāi)發(fā)簡(jiǎn)單Java程序1.創(chuàng)建Java程序的文件夾E:\allworkspace\java_workspace2.創(chuàng)建Java程序的文件HelloWorld.java3.編寫(xiě)Java程序的代碼/*HelloWorld.java*///創(chuàng)建類(lèi)publicclassHelloWorld{ //主方法 publicstaticvoidmain(Stringargs[]){ //主方法 //輸出字符串 System.out.println("HelloWorld!"); }}開(kāi)發(fā)簡(jiǎn)單Java程序4.編譯和運(yùn)行Java程序編譯命令:javac文件名.java運(yùn)行命令:java文件名4課后作業(yè)課后作業(yè)1.動(dòng)手安裝JDK2.配置Java環(huán)境變量3.編寫(xiě)自己的第一個(gè)Java程序使用集成開(kāi)發(fā)工具Eclipse01Eclipse簡(jiǎn)介02下載和安Eclipse03Eclipse的使用04課后練習(xí)CONTENTS目錄1Eclipse的簡(jiǎn)介Eclipse的簡(jiǎn)介1.Eclipse已經(jīng)是最流行的Java集成開(kāi)發(fā)工具之一。2.Eclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。3.Eclipse自身的核心框架是非常小的,其他所有功能都是以
插件的形式附加到該核心框架上的。4.Eclipse的用途并不限于Java語(yǔ)言,支持諸如C/C++等語(yǔ)言。2下載和安裝Eclipse下載和安裝Eclipse1.下載/downloads/2.安裝下載和安裝Eclipse下載和安裝Eclipse2.安裝下載和安裝Eclipse1.漢化/babel/downloads.php解壓縮進(jìn)入eclipse目錄復(fù)制兩個(gè)文件夾粘貼到eclipse安裝目錄的dropins目錄里3Eclipse的使用Eclipse的使用1.修改字體Eclipse的使用2.創(chuàng)建Java項(xiàng)目Eclipse的使用3.創(chuàng)建Java類(lèi)Eclipse的使用4.編寫(xiě)代碼在控制臺(tái)打?。簹g迎使用Eclipse!Eclipse的使用5.運(yùn)行4課后練習(xí)課后練習(xí)1.自己動(dòng)手安裝并漢化Eclipse2.創(chuàng)建Java項(xiàng)目,編寫(xiě)代碼,在控制臺(tái)中打印《鋤禾》這首詩(shī)感謝大家觀看Java程序設(shè)計(jì)教程(第2版)標(biāo)識(shí)符與關(guān)鍵字01標(biāo)識(shí)符02關(guān)鍵字03課后練習(xí)CONTENTS目錄1標(biāo)識(shí)符標(biāo)識(shí)符1.什么是標(biāo)識(shí)符現(xiàn)實(shí)生活中,所有事物都有自己的名字,以此與其他事物進(jìn)行區(qū)分。在程序設(shè)計(jì)中,也常常用一個(gè)記號(hào)對(duì)變量、數(shù)組、方法和類(lèi)等進(jìn)行標(biāo)識(shí),這個(gè)記號(hào)就稱(chēng)為標(biāo)識(shí)符。簡(jiǎn)單地講,標(biāo)識(shí)符就是一個(gè)名字。標(biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(1)標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)、美元符號(hào)($)組成,沒(méi)有長(zhǎng)度限制?!獭獭獭翗?biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(2)標(biāo)識(shí)符的首字符必須是字母、下劃線或美元符號(hào)?!獭獭獭翗?biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(3)標(biāo)識(shí)符中的字母是區(qū)分大小寫(xiě)的,如Dog和dog是不同的標(biāo)識(shí)符。(4)常量通常以大寫(xiě)字母英文單詞命名,變量通常以小寫(xiě)字母英文單詞命名。
如果一個(gè)變量名由多個(gè)單詞構(gòu)成,則第一個(gè)單詞小寫(xiě),第二個(gè)單詞首字母大寫(xiě)。(5)類(lèi)標(biāo)識(shí)符通常以大寫(xiě)英文字母開(kāi)始。標(biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(6)Java關(guān)鍵字、保留字等不能作為用戶自定義標(biāo)識(shí)符使用?!獭痢?關(guān)鍵字關(guān)鍵字1.什么是關(guān)鍵字關(guān)鍵字(keyword)是指編程語(yǔ)言預(yù)先定義的標(biāo)識(shí)符,在程序中有其特殊的含義,用戶不能將其用作自定義標(biāo)識(shí)符。關(guān)鍵字2.Java中有哪些關(guān)鍵字關(guān)鍵字2.Java中有哪些關(guān)鍵字其中,保留字(reservedword)為Java語(yǔ)言中預(yù)留的但暫時(shí)沒(méi)有使用的關(guān)鍵字。此外,true、false和null不是Java的關(guān)鍵字,它們只是常量值,但也不可以作為標(biāo)識(shí)符使用。3課后練習(xí)課后練習(xí)1.熟記Java中的標(biāo)識(shí)符的定義規(guī)范2.熟記Java中的關(guān)鍵字變量與常量01變量02常量03課后練習(xí)CONTENTS目錄1變量變量1.什么是變量變量是指在程序運(yùn)行過(guò)程中其值可以改變的量,它用于在程序運(yùn)行時(shí)臨時(shí)存放數(shù)據(jù)。變量2.變量的聲明類(lèi)型變量名1[=初值1][,變量名2[=初值2]……];注意:1.變量初始化后還可以對(duì)變量重新賦值,重新賦值后,新的值將會(huì)覆蓋原來(lái)的值。2.Java語(yǔ)言中允許使用漢字或其他語(yǔ)言文字作為變量名。3.聲明變量時(shí)應(yīng)選擇有意義的單詞作為變量名變量2.變量的有效范圍(1)成員變量:在類(lèi)體中定義的變量,它在整個(gè)類(lèi)中,自聲明變量處開(kāi)始到整個(gè)類(lèi)結(jié)束的范圍內(nèi)有效。變量2.變量的有效范圍(2)局部變量:在類(lèi)的方法內(nèi)部定義的變量,它只在當(dāng)前定義的方法中,自變量聲明處開(kāi)始到方法結(jié)束范圍內(nèi)有效,不能用于類(lèi)的其他方法。變量3.注意問(wèn)題(1)為了使變量在類(lèi)或方法的整個(gè)范圍內(nèi)有效,通常將變量聲明到類(lèi)或方法的最上方。(2)變量在聲明時(shí)可以不賦初值,但在使用變量前必須對(duì)其賦值。(3)在小范圍內(nèi)使用大范圍變量的時(shí)候,有些情況下,小范圍將其修改后,會(huì)影響大范圍變量的值。(4)局部變量盡量避免與全局變量重名。2常量常量1.什么是常量常量是指在程序運(yùn)行過(guò)程中其值不能改變的量,通常也稱(chēng)為“final變量”,它在整個(gè)程序中只能賦值一次。2.語(yǔ)法final類(lèi)型常量名[=初值];使用場(chǎng)景:一般來(lái)說(shuō),如果在程序中多處引用某個(gè)值,則可以將它定義為常量。這樣,既可以避免反復(fù)輸入同一個(gè)值,也可以在這個(gè)值發(fā)生變化時(shí),只修改常量值,避免多處修改。3課后練習(xí)課后練習(xí)public
classEclipseTest{ int
f9; public
static
voidmain(String[]args){ final
char
name='e’; byte
b=4;
int
userAge=20; }}指出下面代碼中的成員變量、局部變量和常量基本數(shù)據(jù)類(lèi)型01數(shù)據(jù)類(lèi)型分類(lèi)02整型07課后練習(xí)CONTENTS目錄03字符型04浮點(diǎn)型布爾型0506數(shù)據(jù)類(lèi)型轉(zhuǎn)換1數(shù)據(jù)類(lèi)型分類(lèi)數(shù)據(jù)類(lèi)型分類(lèi)Java提供了8種基本數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ)數(shù)值型、字符型和布爾型數(shù)據(jù)2整型整型1.整型的取值范圍數(shù)據(jù)類(lèi)型關(guān)鍵字內(nèi)存空間(位)取值范圍字節(jié)型byte8?27~27?1(?128~127)短整型short16?215~215?1(?32768~32767)整型int32?231~231?1(?2147483648~2147483647)長(zhǎng)整型long64?263~263?1整型2.整型的3種表示形式(1)十進(jìn)制整數(shù):由正、負(fù)號(hào)和數(shù)字0~9組成,但數(shù)字部分不能以0開(kāi)頭,例如:intx=10,y=-24;(2)八進(jìn)制整數(shù):由正、負(fù)號(hào)和數(shù)字0~7組成,數(shù)字部分以0開(kāi)頭,例如:shortx=010,y=-024;(3)十六進(jìn)制整數(shù):由正、負(fù)號(hào),數(shù)字0~9,字母A~F或a~f(表示數(shù)值10~15)組成,數(shù)字部分以0X或0x開(kāi)頭,例如:intx=0xffff,y=-0X3D4;3浮點(diǎn)型浮點(diǎn)型1.浮點(diǎn)型的取值范圍數(shù)據(jù)類(lèi)型關(guān)鍵字內(nèi)存空間(位)取值范圍單精度型float32[?3.4028235e38~?1.4e?45]∪[1.4e?45~3.4028235e38]雙精度型double64[?1.7976931348623157e308~?4.9e?324]∪[4.9e?324~1.7976931348623157e308]浮點(diǎn)型2.浮點(diǎn)型的兩種表示方法(1)小數(shù)表示法,它由整數(shù)部分和小數(shù)部分組成。例如:floatc=4.0f;floatd=5.32f;(2)科學(xué)表示法,它常用來(lái)表示很大或很小的數(shù),表示方法是在小數(shù)表示法后加“E”或“e”及指數(shù)部分。例如:floatf1=0.123f,f2=4.2e-5F;doubled1=0.123,d2=0.789d,d3=3e6D;注意:“E”或“e”前面必須有數(shù)字,指數(shù)部分可正可負(fù),但必須都是整數(shù)4字符型字符型1.什么是字符型字符型數(shù)據(jù)是指使用單引號(hào)括起來(lái)的一個(gè)字符,它是區(qū)分大小寫(xiě)的,如'A'和'a'是兩個(gè)不同的字符。除此之外,還可以使用字符在Unicode字符集中的位置來(lái)表示,如字符a在Unicode字符集中位置是97。例如:字符型2.字符型中的轉(zhuǎn)義字符轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義\ddd1~3位八進(jìn)制數(shù)據(jù)所表示的字符,如\123\t制表符\uxxxx4位十六進(jìn)制數(shù)據(jù)所表示的字符,如\u02b6\r回車(chē)符\'單引號(hào)字符\n換行符\"雙引號(hào)字符\b退格符\\反斜杠字符\f換頁(yè)符一些無(wú)法正常顯示的字符,如回車(chē)符、換行符等,可用轉(zhuǎn)義字符表示5布爾型布爾型布爾型數(shù)據(jù)只有true和false兩個(gè)值,分別代表邏輯“真”和邏輯“假”。布爾型使用關(guān)鍵字boolean表示,它所占的內(nèi)存空間為8位。例如:6數(shù)據(jù)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換1.什么是數(shù)據(jù)類(lèi)型轉(zhuǎn)換Java在進(jìn)行賦值或運(yùn)算時(shí)要對(duì)數(shù)據(jù)類(lèi)型進(jìn)行檢查,如果數(shù)據(jù)類(lèi)型不一致,則要進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。2.基本數(shù)據(jù)類(lèi)型優(yōu)先級(jí)從低到高順序(byte、short、char)→int→long→float→double數(shù)據(jù)類(lèi)型轉(zhuǎn)換3.自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換轉(zhuǎn)換場(chǎng)景:?當(dāng)數(shù)據(jù)從低級(jí)類(lèi)型向高級(jí)類(lèi)型轉(zhuǎn)換時(shí),系統(tǒng)將自動(dòng)執(zhí)行,編程人員無(wú)須進(jìn)行任何操作,這種轉(zhuǎn)換稱(chēng)為自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換。?當(dāng)參與運(yùn)算的數(shù)據(jù)包含多種數(shù)據(jù)類(lèi)型時(shí),低級(jí)數(shù)據(jù)類(lèi)型的數(shù)據(jù)將被自動(dòng)轉(zhuǎn)換為高級(jí)數(shù)據(jù)類(lèi)型,以參與運(yùn)算。例如://定義long型變量xlong
x=10;//由于float型優(yōu)先級(jí)比long型高,x自動(dòng)轉(zhuǎn)換為float型,所以y的值為10.0float
y=x;//x*y的結(jié)果為float型,自動(dòng)轉(zhuǎn)換為double型,z的值為100.0double
z=x*y;數(shù)據(jù)類(lèi)型轉(zhuǎn)換4.強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換轉(zhuǎn)換場(chǎng)景:?當(dāng)把數(shù)據(jù)類(lèi)型優(yōu)先級(jí)較高的數(shù)據(jù)賦值給數(shù)據(jù)類(lèi)型優(yōu)先級(jí)相對(duì)較低的變量時(shí),必須進(jìn)行強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換。語(yǔ)法格式:
(數(shù)據(jù)類(lèi)型)數(shù)據(jù)注意:進(jìn)行強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換時(shí),可能會(huì)產(chǎn)生數(shù)據(jù)溢出或精度損失。3課后練習(xí)課后練習(xí)1.下面語(yǔ)句不能編譯成功的是()。A.inta=1+2+3; B.doubled=(int)(1+2+3);C.floatf=1+(int)(2.1+3.1); D.inta=(int)1.1+2.2;2.如有定義“doublex=3.5;”,則表達(dá)式(int)x*0.5的值是________。運(yùn)算符與表達(dá)式01算術(shù)運(yùn)算符與表達(dá)式02關(guān)系運(yùn)算符及其表達(dá)式07運(yùn)算符的優(yōu)先級(jí)CONTENTS目錄03位運(yùn)算符及其表達(dá)式04邏輯運(yùn)算符及其表達(dá)式賦值運(yùn)算符及其表達(dá)式0506條件運(yùn)算符及其表達(dá)式08課后練習(xí)1算術(shù)運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符與表達(dá)式算術(shù)表達(dá)式由算術(shù)運(yùn)算符和操作數(shù)組成,用于完成基本的算術(shù)運(yùn)算。算術(shù)表達(dá)式的操作數(shù)包括常量、變量等。分
類(lèi)運(yùn)算符名
稱(chēng)示例運(yùn)算結(jié)果二元運(yùn)算符+加法運(yùn)算A+BA和B的和?減法運(yùn)算A?BA和B的差*乘法運(yùn)算A*BA和B的積/除法運(yùn)算A/BA除以B的商%取余運(yùn)算A%BA除以B的余數(shù)一元運(yùn)算符+正號(hào)+AA的值?負(fù)號(hào)?AA的負(fù)數(shù)++自增++A,A++A自加1??自減??A,A??A自減1例如:算術(shù)運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符應(yīng)注意的問(wèn)題:?
不同類(lèi)型的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時(shí),運(yùn)算結(jié)果與精度最高的數(shù)據(jù)類(lèi)型一致。?
對(duì)于除法運(yùn)算,如果是兩個(gè)整數(shù)相除,則結(jié)果亦為整數(shù),小數(shù)部分將被舍去,如7/2=3。只有兩個(gè)數(shù)中有一個(gè)是浮點(diǎn)數(shù),結(jié)果才為浮點(diǎn)數(shù)。且除數(shù)不能為0,否則會(huì)拋出異常。?
自增、自減運(yùn)算符前置與后置的區(qū)別:當(dāng)自增(減)運(yùn)算符前置時(shí),操作數(shù)先增(減)1再使用;當(dāng)自增(減)運(yùn)算符后置時(shí),則操作數(shù)先使用再增(減)1。算術(shù)運(yùn)算符與表達(dá)式通過(guò)代碼比較自增、自減運(yùn)算符前置與后置的不同。案例:2關(guān)系運(yùn)算符及其表達(dá)式關(guān)系運(yùn)算符與表達(dá)式關(guān)系表達(dá)式由關(guān)系運(yùn)算符和操作數(shù)組成,用來(lái)比較兩個(gè)操作數(shù)的大小,比較的結(jié)果是一個(gè)布爾值(true或false)。操作數(shù)可以是算術(shù)表達(dá)式、布爾表達(dá)式、整數(shù)、浮點(diǎn)數(shù)和字符等。運(yùn)算符名
稱(chēng)示
例運(yùn)算結(jié)果==等于A==B如果A與B相等則結(jié)果為真,否則為假!=不等于A!=B如果A與B不相等則結(jié)果為真,否則為假>
大于A>B如果A大于B則結(jié)果為真,否則為假<
小于A<B如果A小于B則結(jié)果為真,否則為假>=大于等于A>=B如果A大于等于B則結(jié)果為真,否則為假<=小于等于A<=B如果A小于等于B則結(jié)果為真,否則為假注意:(1)關(guān)系表達(dá)式的運(yùn)算次序是先分別算出運(yùn)算符兩側(cè)表達(dá)式的值,然后再將兩者進(jìn)行比較。(2)字符型數(shù)據(jù)按其在Unicode標(biāo)準(zhǔn)字符集中的位置值進(jìn)行比較。常見(jiàn)字符的位置值由小到大的順序是:空格<'0'<…<'9'<'A'<…<'Z'<'a'<…<'z'<任何漢字。3邏輯運(yùn)算符及其表達(dá)式邏輯運(yùn)算符與表達(dá)式邏輯表達(dá)式由邏輯運(yùn)算符和操作數(shù)組成。操作數(shù)可以是布爾值或布爾表達(dá)式,運(yùn)算結(jié)果是布爾值。運(yùn)算符名
稱(chēng)示
例運(yùn)算結(jié)果!非!AA為true時(shí)結(jié)果為false,A為false時(shí)結(jié)果為true&&、&與A&&B、A&BA、B同為true時(shí)結(jié)果為true,否則為false||、|或A||B、A|BA、B同為false時(shí)結(jié)果為false,否則為true^異或A^BA、B同為true時(shí)或同為false時(shí)結(jié)果為false,否則為true“&&”和“||”運(yùn)算符又分別稱(chēng)“短路與”和“短路或”。邏輯運(yùn)算符與表達(dá)式關(guān)系運(yùn)算符和邏輯運(yùn)算符示例。案例:4位運(yùn)算符及其表達(dá)式位運(yùn)算符與表達(dá)式位表達(dá)式由位運(yùn)算符和操作數(shù)組成,用于完成二進(jìn)制位的運(yùn)算。例如,將一個(gè)存儲(chǔ)單元中的各二進(jìn)制位左移或右移一位,位表達(dá)式的操作數(shù)可以是整型和字符型數(shù)據(jù)。運(yùn)算符名
稱(chēng)示例說(shuō)
明&按位與A&BA與B對(duì)應(yīng)的兩個(gè)二進(jìn)制位均為1時(shí),結(jié)果才為1,否則為0|按位或A|BA與B對(duì)應(yīng)的兩個(gè)二進(jìn)制位有一個(gè)為1時(shí),結(jié)果就為1^按位異或A^BA與B對(duì)應(yīng)的兩個(gè)二進(jìn)制位不同時(shí),結(jié)果為1,否則為0~按位取反~A對(duì)A的每個(gè)二進(jìn)制位取反<<
左移A<<BA的二進(jìn)制位全部左移B位,移出的高位舍棄,低位補(bǔ)0,如6<<2=(00000110)<<2=(00011000)=18>>
帶符號(hào)右移A>>BA的二進(jìn)制位全部右移B位,移出的低位舍棄,正數(shù)高位補(bǔ)0,負(fù)數(shù)高位補(bǔ)1。例如,9>>2=([0]0001001)>>2=([0]0000010)=2,?9>>2=([1]1110111)>>2=([1]1111101)=?3,其中[0]、[1]表示符號(hào)位>>>
無(wú)符號(hào)右移A>>>BA的二進(jìn)制位全部右移B位,移出的低位舍棄,正數(shù)和負(fù)數(shù)高位都補(bǔ)0,如?9>>>2=([1]1110111)>>>2=([0]0111101)=0x3d5賦值運(yùn)算符及其表達(dá)式賦值運(yùn)算符與表達(dá)式賦值表達(dá)式由賦值運(yùn)算符和操作數(shù)組成。賦值運(yùn)算符以符號(hào)“=”表示,它是一個(gè)二元運(yùn)算符,其功能是將右邊操作數(shù)的值賦給左邊操作數(shù)。左邊操作數(shù)必須是一個(gè)變量,而右邊操作數(shù)可以是任何表達(dá)式。運(yùn)算符示
例示例表達(dá)式等價(jià)于+=A+=BA=A+B(兩數(shù)相加)?=A?=BA=A?B(兩數(shù)相減)*=A*=BA=A*B(兩數(shù)相乘)/=A/=BA=A/B(兩數(shù)相除)%=A%=BA=A%B(兩數(shù)求余)&=A&=BA=A&B(兩數(shù)按位與)|=A|=BA=A|B(兩數(shù)按位或)^=A^=BA=A^B(兩數(shù)按位異或)<<=A<<=BA=A<<B(A左移B位)>>=A>>=BA=A>>B(A帶符號(hào)右移B位)>>>=A>>>=BA=A>>>B(A無(wú)符號(hào)右移B位)6條件運(yùn)算符及其表達(dá)式條件運(yùn)算符與表達(dá)式條件運(yùn)算符屬于三元運(yùn)算符,即包含3個(gè)操作對(duì)象。語(yǔ)法格式:表達(dá)式1?表達(dá)式2:表達(dá)式3;例如:7運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中運(yùn)算符執(zhí)行的先后順序,如果兩個(gè)運(yùn)算符有相同的優(yōu)先級(jí),則根據(jù)它們的結(jié)合性決定先后順序。優(yōu)先級(jí)運(yùn)算符結(jié)合性1()從左到右2+(正)、?(負(fù))、++、??、~、!從右向左3*、/、%從左向右4+(加)、?(減)從左向右5<<、>>、>>>從左向右6<、<=、>、>=從左向右7==、!=從左向右8&從左向右9^從左向右10|從左向右11&&從左向右12||從左向右13?:從右向左14=、+=、?=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=從右向左運(yùn)算符的優(yōu)先級(jí)如果想要改變它們的計(jì)算順序,可以使用圓括號(hào)。2+3*4 //結(jié)果為14(2+3)*4 //使用括號(hào)后,結(jié)果為208課后練習(xí)課后練習(xí)1.已知i=0xFFFFFFFF,j=0x0,下面表達(dá)式值為0的是(
)。A.i<<2 B.i&j C.i^j D.i|j2.下面語(yǔ)句的輸出結(jié)果是__________。!(3>5&5<7|8+9<23)Java程序設(shè)計(jì)教程
之典型案例01計(jì)算球體體積02課后作業(yè)CONTENTS目錄1計(jì)算球體體積典型案例問(wèn)題描述
編寫(xiě)一個(gè)Java程序,根據(jù)輸入的球體半徑,計(jì)算球體體積并輸出。
2課后作業(yè)課后作業(yè)輸入圓柱體的底面半徑和高,計(jì)算圓柱體的表面積感謝大家觀看Java程序設(shè)計(jì)教程(第2版)程序結(jié)構(gòu)程序結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)分為順序、選擇、循環(huán)3種基本結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)按照程序代碼先后順序自上而下地執(zhí)行,直到程序結(jié)束。根據(jù)判斷條件是否滿足來(lái)決定是否執(zhí)行指定操作。重復(fù)執(zhí)行某些操作,直到不滿足循環(huán)條件才終止循環(huán)條件語(yǔ)句01if語(yǔ)句02switch語(yǔ)句03課后作業(yè)CONTENTS目錄1if語(yǔ)句if語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句簡(jiǎn)單if語(yǔ)句的語(yǔ)法格式如下:if(表達(dá)式){
語(yǔ)句塊}注意:若if判斷語(yǔ)句的語(yǔ)句代碼塊中僅有一條執(zhí)行語(yǔ)句,可省略{}布爾表達(dá)式語(yǔ)句塊truefalseif語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句if語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句if…else…語(yǔ)句的語(yǔ)法格式如下:if(表達(dá)式){
語(yǔ)句塊1}else{
語(yǔ)句塊2}布爾表達(dá)式語(yǔ)句塊1true語(yǔ)句塊2falseif語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句if語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句if…elseif…else…語(yǔ)句的語(yǔ)法格式如下:if(表達(dá)式1){
語(yǔ)句塊1}elseif(表達(dá)式2){}{
語(yǔ)句塊2}…elseif(表達(dá)式n){}{
語(yǔ)句塊n}else{
語(yǔ)句塊n+1}truetruetruefalsefalsefalseif語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句if語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句嵌套的if語(yǔ)句的語(yǔ)法格式如下:if(表達(dá)式1){ if(表達(dá)式2){
語(yǔ)句塊1 } else{
語(yǔ)句塊2 }}else{ if(表達(dá)式3){
語(yǔ)句塊3 } else{
語(yǔ)句塊4 }}布爾表達(dá)式1語(yǔ)句1true語(yǔ)句4false布爾表達(dá)式2布爾表達(dá)式3語(yǔ)句2語(yǔ)句3truefalsetruefalseif語(yǔ)句分類(lèi)簡(jiǎn)單的if語(yǔ)句if…else…語(yǔ)句if…elseif…else…語(yǔ)句嵌套的if語(yǔ)句2switch語(yǔ)句switch語(yǔ)句if-elseif-else語(yǔ)句分支較多時(shí),會(huì)降低程序的可讀性。Java中的switch語(yǔ)句可以通過(guò)數(shù)據(jù)匹配的方式實(shí)現(xiàn)程序的多分支控制,其語(yǔ)法格式如下:switch(變量){ case變量的可能結(jié)果1:[語(yǔ)句塊1][break;] case變量的可能結(jié)果2:[語(yǔ)句塊2][break;]
… case變量的可能結(jié)果n:[語(yǔ)句塊n][break;] [default:語(yǔ)句塊n+1]}switch后面表達(dá)式的值必須是整型、字符型或字符串類(lèi)型;case后面常量表達(dá)式的值必須與switch后面表達(dá)式的值的數(shù)據(jù)類(lèi)型相同;方括號(hào)括起來(lái)的內(nèi)容是可選項(xiàng)。switch語(yǔ)句注意事項(xiàng):同一個(gè)switch語(yǔ)句中,各個(gè)case后的常量表達(dá)式的值必須互不相等。case后的語(yǔ)句可以是一條語(yǔ)句,也可以是多條語(yǔ)句,此時(shí)多條語(yǔ)句不必用大括號(hào)括起來(lái)。default可以省略,省略時(shí)如果沒(méi)有與switch表達(dá)式相匹配的case常量,則不執(zhí)行任何語(yǔ)句,程序轉(zhuǎn)到switch語(yǔ)句后的下一條語(yǔ)句執(zhí)行。break語(yǔ)句和switch語(yǔ)句最外層的右大括號(hào)是退出switch選擇結(jié)構(gòu)的出口,遇到第1個(gè)break即終止執(zhí)行switch語(yǔ)句,如果程序沒(méi)有break語(yǔ)句,則在執(zhí)行完某個(gè)case語(yǔ)句后,將繼續(xù)執(zhí)行下一個(gè)case語(yǔ)句,直到遇到switch語(yǔ)句的右大括號(hào)為止。因此,通常在每個(gè)case語(yǔ)句后增加一個(gè)break語(yǔ)句,來(lái)達(dá)到終止switch語(yǔ)句執(zhí)行的目的。switch語(yǔ)句案例:3課后作業(yè)課后練習(xí)下面if語(yǔ)句語(yǔ)法正確的是(
)。A.
B.if(x>0) ifx>0 x=1; x=1;else else x=-1; x=-1;C. D.if(x>0): if(x>0) x=1; x=1else else x=-1; x=-1循環(huán)語(yǔ)句01while語(yǔ)句02do-while語(yǔ)句05課后練習(xí)CONTENTS目錄for語(yǔ)句03循環(huán)嵌套041while語(yǔ)句while語(yǔ)句1.while語(yǔ)句的語(yǔ)法格式while(表達(dá)式){
語(yǔ)句塊 //循環(huán)體}表達(dá)式語(yǔ)句塊truefalsewhile語(yǔ)句2.while語(yǔ)句的注意事項(xiàng)變量初始化描述要完整、準(zhǔn)確。在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。while語(yǔ)句3.案例分析使用while語(yǔ)句求S=1+2+3+…+100的值。2do-while語(yǔ)句do-while語(yǔ)句1.do-while語(yǔ)句的語(yǔ)法格式do{
語(yǔ)句塊 //循環(huán)體}while(表達(dá)式);表達(dá)式語(yǔ)句塊truefalsedo-while語(yǔ)句2.案例分析使用do-while語(yǔ)句求S=1+2+3+…+100的值。3for語(yǔ)句for語(yǔ)句1.for語(yǔ)句的語(yǔ)法格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
語(yǔ)句塊 //循環(huán)體}表達(dá)式1:通常是賦值表達(dá)式,實(shí)現(xiàn)循環(huán)變量的初始化。只在循環(huán)開(kāi)始前執(zhí)行一次。表達(dá)式2:通常是關(guān)系表達(dá)式或邏輯表達(dá)式,是循環(huán)是否繼續(xù)的判斷依據(jù)。如果其值為true,則執(zhí)行循環(huán)體,如果為false則結(jié)束循環(huán)。表達(dá)式3:用來(lái)描述循環(huán)變量的變化,多數(shù)情況下為自增或自減表達(dá)式,實(shí)現(xiàn)對(duì)循環(huán)變量的修改。例如:for(inti=1;i<=10;i++){
語(yǔ)句塊}for語(yǔ)句2.案例分析使用for語(yǔ)句實(shí)現(xiàn),輸入一個(gè)整數(shù),輸出該整數(shù)的所有因子。4循環(huán)嵌套循環(huán)嵌套1.什么是循環(huán)嵌套一個(gè)循環(huán)語(yǔ)句的循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套。while語(yǔ)句、do-while語(yǔ)句和for語(yǔ)句可以互相嵌套,自由組合。例如:for(inti=1;i<5;i++){ for(intj=0;j<i;j++){ System.out.print("$");}}循環(huán)嵌套2.案例分析編寫(xiě)程序,輸出以下乘法表。1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=16…………1*9=92*9=93*9=274*9=36……9*9=815課后練習(xí)課后練習(xí)使用while循環(huán)輸出2~100的所有素?cái)?shù)(只能被1和自己整除的自然數(shù)),每行輸出5個(gè)。跳轉(zhuǎn)語(yǔ)句01跳轉(zhuǎn)語(yǔ)句使用場(chǎng)景03continue語(yǔ)句05課后練習(xí)CONTENTS目錄02break語(yǔ)句04return語(yǔ)句1跳轉(zhuǎn)語(yǔ)句使用場(chǎng)景跳轉(zhuǎn)語(yǔ)句使用場(chǎng)景1.什么是跳轉(zhuǎn)語(yǔ)句跳轉(zhuǎn)語(yǔ)句的作用是使程序從一個(gè)位置跳轉(zhuǎn)到另一個(gè)位置。Java提供了一種在條件滿足的時(shí)候跳出循環(huán)的機(jī)制。即當(dāng)我們不知道循環(huán)將要執(zhí)行的次數(shù)時(shí),可以通過(guò)設(shè)置終止循環(huán)的條件來(lái)跳出循環(huán)。2.跳轉(zhuǎn)語(yǔ)句的分類(lèi)break語(yǔ)句continue語(yǔ)句return語(yǔ)句throw語(yǔ)句throw語(yǔ)句會(huì)拋出異常,且后面的語(yǔ)句不會(huì)執(zhí)行,跳到捕獲異常的地方。2break語(yǔ)句break語(yǔ)句1.break語(yǔ)句的使用范圍break語(yǔ)句用于switch語(yǔ)句時(shí),可以使程序跳出switch語(yǔ)句,從而執(zhí)行swith語(yǔ)句之后的語(yǔ)句。break語(yǔ)句用于循環(huán)語(yǔ)句時(shí),可以使程序終止循環(huán)而執(zhí)行循環(huán)后的語(yǔ)句。2.break語(yǔ)句的用例計(jì)算滿足條件的最大整數(shù)n,使得1+2+3+…+n<=1000。循換結(jié)構(gòu)的選擇,for循環(huán)或者while循環(huán)break語(yǔ)句通常用在switch語(yǔ)句及循環(huán)語(yǔ)句中,循環(huán)語(yǔ)句包括for、while、dowhile等。3continue語(yǔ)句continue語(yǔ)句1.continue語(yǔ)句的使用范圍與break語(yǔ)句終止整個(gè)循環(huán)不同的是,continue語(yǔ)句用于終止本次循環(huán),即跳出continue語(yǔ)句后邊的語(yǔ)句,然后執(zhí)行下次循環(huán)。2.continue語(yǔ)句的用例輸出1~20所有的奇數(shù)。取數(shù)的范圍循環(huán)中的非奇數(shù)如何處理4return語(yǔ)句return語(yǔ)句1.return語(yǔ)句的使用范圍return語(yǔ)句用在方法中,以終止當(dāng)前的方法,返回到方法的調(diào)用處。2.return語(yǔ)句的表達(dá)式(1)return語(yǔ)句后面可以帶返回值,也可以不帶。return[表達(dá)式];(2)表達(dá)式可以是常量、變量、對(duì)象等。return語(yǔ)句后面表達(dá)式的數(shù)據(jù)類(lèi)型必須與方法聲明的數(shù)據(jù)類(lèi)型一致。(3)當(dāng)程序執(zhí)行return語(yǔ)句時(shí),先計(jì)算表達(dá)式的值,然后將表達(dá)式的值返回到調(diào)用該方法的語(yǔ)句處。(4)位于return語(yǔ)句后面的代碼不會(huì)被執(zhí)行,所以return語(yǔ)句通常位于語(yǔ)句塊的最后。3課后練習(xí)課后練習(xí)使用for循環(huán)語(yǔ)句完成break的用例輸出1-30中偶數(shù)典型案例 —猜數(shù)字游戲01猜數(shù)字游戲02課后練習(xí)CONTENTS目錄1猜數(shù)字游戲猜數(shù)字游戲1.案例需求根據(jù)提示(數(shù)字太大或太?。?,輸入數(shù)字。如果猜錯(cuò)了,則繼續(xù)游戲,猜對(duì)了則終止游戲,并輸出猜數(shù)字次數(shù)。2.案例分析使用while循環(huán)實(shí)現(xiàn)多次輸入數(shù)字在循環(huán)中嵌套使用if-elseif-else語(yǔ)句判斷是否猜對(duì)定義計(jì)數(shù)變量記錄猜數(shù)字次數(shù),每執(zhí)行一次循環(huán),計(jì)數(shù)變量增加1如果輸入的數(shù)字大于或小于目標(biāo)數(shù)字,則輸出數(shù)字太大或太小的提示,使用continue跳出本次循環(huán)如果輸入的數(shù)字等于目標(biāo)數(shù)字,則輸出猜對(duì)提示,并輸出猜數(shù)次數(shù),使用break跳出循環(huán)2課后練習(xí)課后練習(xí)輸出1,2,3,4,5所有的組合整數(shù)(不能出現(xiàn)重復(fù)的數(shù))感謝大家觀看Java程序設(shè)計(jì)教程(第2版)面向?qū)ο蟾攀?1對(duì)象和類(lèi)02面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征CONTENTS目錄對(duì)象和類(lèi)對(duì)象屬性行為類(lèi):對(duì)這些具有共同特征的對(duì)象的概括、歸納和抽象表達(dá)。圖4-1類(lèi)和對(duì)象的關(guān)系對(duì)象和類(lèi)面向?qū)ο蟪绦蛟O(shè)計(jì)具有封裝、繼承和多態(tài)3個(gè)基本特征。1.封裝(3)用戶只能通過(guò)已定義的接口訪問(wèn)數(shù)據(jù),避免了外部操作對(duì)內(nèi)部數(shù)據(jù)的影響。封裝可提高程序的安全性和可維護(hù)性。(1)封裝是OOP的核心思想,它將對(duì)象的屬性和行為封裝起來(lái)(其載體是類(lèi)),隱藏其實(shí)現(xiàn)細(xì)節(jié),用戶只需通過(guò)接口來(lái)訪問(wèn)對(duì)象。(2)封裝控制了用戶對(duì)類(lèi)的修改和訪問(wèn)數(shù)據(jù)的程度,從而保證了類(lèi)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的完整性。對(duì)象和類(lèi)2.繼承繼承:面向?qū)ο蟪绦蛟O(shè)計(jì)中兩個(gè)類(lèi)之間的一種關(guān)系,是指從已有的類(lèi)中派生出新的類(lèi)。被繼承的類(lèi)繼承父類(lèi)的類(lèi)超類(lèi)或父類(lèi)子
類(lèi)繼承父類(lèi)的屬性和行為增加自己的屬性和行為改變從父類(lèi)繼承來(lái)的行為繼承使父類(lèi)的代碼得到重用,在繼承父類(lèi)提供的共同特性的基礎(chǔ)上增加新的代碼,從而使編程不必從頭開(kāi)始,有效提高了編程效率。對(duì)象和類(lèi)3.多態(tài)多態(tài)性可以用“一個(gè)對(duì)外接口,多種實(shí)現(xiàn)方法”來(lái)表示。子類(lèi)繼承父類(lèi)的屬性和行為后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為,這使得同一個(gè)屬性或行為在父類(lèi)及其各個(gè)子類(lèi)中具有不同的含義。類(lèi)01類(lèi)定義02成員變量07課后練習(xí)CONTENTS目錄03成員方法04方法重載05this關(guān)鍵字06構(gòu)造方法1類(lèi)定義類(lèi)定義語(yǔ)法格式[類(lèi)修飾符]class類(lèi)名[extends父類(lèi)名][implements接口名]{//類(lèi)聲明 …… //類(lèi)體}注意:類(lèi)修飾符可以是public、abstract和final等關(guān)鍵字,如果缺省,Java編譯器默認(rèn)該類(lèi)為friendly類(lèi);class是Java的關(guān)鍵字,表示一個(gè)類(lèi)的聲明;類(lèi)名必須是合法標(biāo)識(shí)符,通常是一個(gè)有意義的名稱(chēng),且首字母一般是大寫(xiě)字母;extends關(guān)鍵字表示繼承,父類(lèi)名是要繼承的類(lèi)名;implements關(guān)鍵字表示類(lèi)實(shí)現(xiàn)接口。類(lèi)定義例子2成員變量成員變量語(yǔ)法格式[修飾符]數(shù)據(jù)類(lèi)型變量名[=初值];注意:修飾符可以是訪問(wèn)控制修飾符,也可以是static、final等關(guān)鍵字;數(shù)據(jù)類(lèi)型可以是基本數(shù)據(jù)類(lèi)型,也可以是引用數(shù)據(jù)類(lèi)型;在定義成員變量時(shí),可以設(shè)置初值,也可以不設(shè)置初值。如果不設(shè)置初值,Java使用默認(rèn)值對(duì)其進(jìn)行初始化。數(shù)據(jù)類(lèi)型默認(rèn)值byte、short、int、long0float、double0.0char''(空格)booleanfalse引用類(lèi)型null(空值)成員變量例子Stringname="張三"; //定義學(xué)生姓名,并賦初值為“張三”intage; //定義學(xué)生年齡,默認(rèn)初值為0floatscore; //定義學(xué)生成績(jī),默認(rèn)初值為0.03成員方法成員方法語(yǔ)法格式[修飾符]返回值類(lèi)型方法名([參數(shù)列表])[throws異常類(lèi)型]{//方法聲明 …… //方法體}注意:修飾符可以是訪問(wèn)控制修飾符,也可以是static、abstract、final等關(guān)鍵字;返回值類(lèi)型用來(lái)指定返回?cái)?shù)據(jù)的類(lèi)型,必須是Java合法的數(shù)據(jù)類(lèi)型,如果不需要返回值,則使用void關(guān)鍵字;參數(shù)列表表示調(diào)用該方法時(shí)傳遞給方法的參數(shù);[throws異常類(lèi)型]表示拋出異常;如果定義的方法有返回值,則必須使用return關(guān)鍵字返回一個(gè)指定類(lèi)型的數(shù)據(jù),并且返回值的類(lèi)型要與方法返回值的類(lèi)型一致。成員方法classStudent{ intage; //定義學(xué)生年齡 publicintgetAge(){ //定義成員方法 returnage; //返回學(xué)生年齡 }}例子4方法重載方法重載什么是方法重載Java中方法重載是指一個(gè)類(lèi)中可以定義名字相同但參數(shù)不同的多個(gè)方法。調(diào)用方法時(shí)會(huì)自動(dòng)根據(jù)不同的參數(shù)選擇相應(yīng)的方法。特點(diǎn):(1)方法名必須相同。(2)方法的參數(shù)不同,包括參數(shù)的個(gè)數(shù)、類(lèi)型或順序。(3)可以有不同的返回類(lèi)型。(4)可以有不同的修飾符。(5)可以拋出不同的異常。方法重載案例定義一個(gè)類(lèi),在該類(lèi)中重載pay()方法,描述所有超市都支持現(xiàn)金付款,大型商超還支持刷卡付款,以及計(jì)算本次支付金額。5this關(guān)鍵字this關(guān)鍵字this關(guān)鍵字的幾種用法當(dāng)成員變量的名字和局部變量的名字相同時(shí),如果要在方法中訪問(wèn)成員變量,可以使用this關(guān)鍵字。this關(guān)鍵字this關(guān)鍵字的幾種用法在方法體中,通過(guò)this關(guān)鍵字可訪問(wèn)當(dāng)前類(lèi)的成員變量和方法。this關(guān)鍵字this關(guān)鍵字的幾種用法輔助調(diào)用類(lèi)的構(gòu)造方法尤其是當(dāng)構(gòu)造方法有多個(gè)時(shí)。但要注意的是,this()語(yǔ)句前不能有其他語(yǔ)句。6構(gòu)造方法構(gòu)造方法構(gòu)造方法的特點(diǎn)構(gòu)造方法沒(méi)有返回值。構(gòu)造方法的調(diào)用時(shí)機(jī)與一般的方法不同。一般的方法是在需要時(shí)調(diào)用,而構(gòu)造方法則是在創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用。所以構(gòu)造方法一般用于初始化成員變量。構(gòu)造方法能被訪問(wèn)控制修飾符修飾,但不能被static、abstract、final等關(guān)鍵字修飾。構(gòu)造方法1.無(wú)參構(gòu)造方法構(gòu)造方法2.有參構(gòu)造方法6課后習(xí)題課后習(xí)題下列關(guān)于構(gòu)造方法的敘述中,錯(cuò)誤的是()。A.構(gòu)造方法不可以重載 B.構(gòu)造方法沒(méi)有返回值,但不用void聲明C.構(gòu)造方法名與類(lèi)名相同 D.構(gòu)造方法可以通過(guò)new自動(dòng)調(diào)用下列關(guān)于this的說(shuō)法中,正確的是()。A.this特指對(duì)某個(gè)成員的引用 B.this不能在靜態(tài)方法中引用C.this是對(duì)某個(gè)類(lèi)的引用 D.this可以用在構(gòu)造方法中對(duì)象01創(chuàng)建對(duì)象02使用對(duì)象04課后練習(xí)CONTENTS目錄03銷(xiāo)毀對(duì)象1創(chuàng)建對(duì)象創(chuàng)建對(duì)象語(yǔ)法格式類(lèi)名對(duì)象名=new類(lèi)的構(gòu)造方法(參數(shù)列表);例子Stringname=“張三”;intage=20;Students1=newStudent(name,age);2使用對(duì)象使用對(duì)象調(diào)用對(duì)象的成員變量和成員方法的語(yǔ)法格式<對(duì)象名>.<變量名><對(duì)象名>.<方法名>([實(shí)參])案例:定義一個(gè)學(xué)生類(lèi)Student,定義成員變量name(姓名)、age(年齡)和score(成績(jī)),并定義有參構(gòu)造方法初始化成員變量,然后定義成員方法display()顯示學(xué)生信息,最后在公共類(lèi)的主方法中創(chuàng)建對(duì)象,通過(guò)對(duì)象調(diào)用成員變量輸出學(xué)生的年齡,并調(diào)用成員方法輸出學(xué)生的成績(jī)。3銷(xiāo)毀對(duì)象銷(xiāo)毀對(duì)象對(duì)象的生命周期創(chuàng)建→使用→銷(xiāo)毀對(duì)象如何銷(xiāo)毀:Java有一個(gè)垃圾回收器,它周期性地掃描對(duì)象的內(nèi)存區(qū),并將沒(méi)有被引用的對(duì)象作為垃圾收集起來(lái),定期釋放不再使用的內(nèi)存空間。用戶可以在Java程序中調(diào)用System類(lèi)的gc()方法來(lái)顯式地運(yùn)行垃圾回收程序??梢哉{(diào)用對(duì)象的finalize()方法,釋放對(duì)象的內(nèi)存空間。4課后習(xí)題課后習(xí)題設(shè)Point為已定義的類(lèi),創(chuàng)建Point對(duì)象a的語(yǔ)句是________________。修飾符01訪問(wèn)控制修飾符02static關(guān)鍵字04final關(guān)鍵字CONTENTS目錄03abstract關(guān)鍵字05課后練習(xí)1訪問(wèn)控制修飾符訪問(wèn)控制修飾符什么是訪問(wèn)控制修飾符訪問(wèn)控制修飾符是一組限定類(lèi)、成員變量或成員方法是否可以被程序里的其他部分訪問(wèn)和調(diào)用的修飾符。訪問(wèn)控制符的修飾范圍訪問(wèn)范圍Private(私有)Friendly(默認(rèn))Protected(被保護(hù))Public(公有)同一個(gè)類(lèi)可訪問(wèn)可訪問(wèn)可訪問(wèn)可訪問(wèn)同一個(gè)包中的其他類(lèi)不可訪問(wèn)可訪問(wèn)可訪問(wèn)可訪問(wèn)不同包中的子類(lèi)不可訪問(wèn)不可訪問(wèn)可訪問(wèn)可訪問(wèn)不同包中的非子類(lèi)不可訪問(wèn)不可訪問(wèn)不可訪問(wèn)可訪問(wèn)類(lèi)的訪問(wèn)控制修飾符只能是public,變量和方法的訪問(wèn)控制修飾符有4個(gè),分別是private、friendly、protected和public,缺省時(shí)為friendly。2static關(guān)鍵字static關(guān)鍵字static修飾變量static變量也稱(chēng)為靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別:靜態(tài)變量被所有對(duì)象共享,在內(nèi)存中只有一個(gè)副本,在類(lèi)初次加載的時(shí)候才會(huì)初始化。非靜態(tài)變量是對(duì)象所擁有的,在創(chuàng)建對(duì)象的時(shí)候被初始化,存在多個(gè)副本,各個(gè)對(duì)象擁有的副本互不影響。staticStringname=“李四”;static關(guān)鍵字static修飾方法static方法一般稱(chēng)作靜態(tài)方法,由于靜態(tài)方法不依賴(lài)于任何對(duì)象就可以進(jìn)行訪問(wèn)。對(duì)于靜態(tài)方法來(lái)說(shuō),是沒(méi)有this的,因?yàn)樗灰栏接谌魏螌?duì)象,既然都沒(méi)有對(duì)象,就談不上this了。在靜態(tài)方法中不能訪問(wèn)類(lèi)的非靜態(tài)成員變量和非靜態(tài)成員方法,因?yàn)榉庆o態(tài)成員方法/變量都是必須依賴(lài)具體的對(duì)象才能夠被調(diào)用。案例創(chuàng)建一個(gè)累加器,其變量為靜態(tài)變量,方法為靜態(tài)方法,并分別通過(guò)類(lèi)和對(duì)象的方式調(diào)用,觀察結(jié)果。3abstract關(guān)鍵字abstract關(guān)鍵字abstract關(guān)鍵字可以修飾類(lèi)和方法abstract類(lèi):帶有abstract修飾符的類(lèi)稱(chēng)為抽象類(lèi),相當(dāng)于類(lèi)的抽象。一個(gè)抽象類(lèi)可以包含抽象方法,它不具備具體功能,只用于衍生出子類(lèi)。因此,抽象類(lèi)不能實(shí)例化。abstract方法:帶有abstract修飾的方法稱(chēng)為抽象方法,是指沒(méi)有方法體的方法,且抽象方法只能出現(xiàn)在抽象類(lèi)中。4final關(guān)鍵字final關(guān)鍵字final關(guān)鍵字可以修飾類(lèi)、方法和變量final類(lèi):帶有final修飾符的類(lèi)稱(chēng)為最終類(lèi)。final方法:帶有final修飾符的方法稱(chēng)為最終方法。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,子類(lèi)可以覆蓋父類(lèi)的方法。但是,如果父類(lèi)的某個(gè)方法用final關(guān)鍵字修飾,則其子類(lèi)就不能覆蓋這個(gè)方法。final變量:帶有final修飾符的變量稱(chēng)為最終變量。final關(guān)鍵字修飾基本數(shù)據(jù)類(lèi)型的變量時(shí),該變量即為常量。如果final關(guān)鍵字修飾引用數(shù)據(jù)類(lèi)型的變量,其本身可以修改,但指向該對(duì)象或數(shù)組的地址的引用不能修改。5課后習(xí)題課后習(xí)題用private修飾成員變量時(shí),下面說(shuō)法正確的是()。A.可以被其他包中的類(lèi)訪問(wèn) B.只能被同一個(gè)包中的其他類(lèi)訪問(wèn)C.只能被所在類(lèi)訪問(wèn) D.可以被任意public類(lèi)訪問(wèn)下列選項(xiàng)中,可以使一個(gè)類(lèi)中定義的成員變量只能被同一類(lèi)訪問(wèn)的是()。A.private B.無(wú)修飾符 C.public D.protected包01創(chuàng)建包02導(dǎo)入包CONTENTS目錄03Java常用的包04課后練習(xí)1創(chuàng)建包創(chuàng)建包如何創(chuàng)建包啟動(dòng)Eclipse,在Eclipse窗口的菜單欄中選擇“文件”→“新建”→“包”選項(xiàng)。創(chuàng)建包如何在包中創(chuàng)建類(lèi)在創(chuàng)建好的包處,右鍵單擊,選擇“新建”→“類(lèi)”選項(xiàng)。2導(dǎo)入包導(dǎo)入包語(yǔ)法格式例子:importchapter4.Book; //單類(lèi)導(dǎo)入chapter4包中的Book類(lèi)importchapter4.*; //按需導(dǎo)入chapter4包中的公共類(lèi)import包名.公共類(lèi)名;import包名.*;導(dǎo)入包例子://按需導(dǎo)入chapter4包中的公共類(lèi)importchapter4.*;//按需導(dǎo)入chapter4.example4_8包中的公共類(lèi)importchapter4.example4_8.*;包之間在存儲(chǔ)結(jié)構(gòu)上存在層次關(guān)系,但在使用方面是完全平等的。導(dǎo)入包案例分析在chapter4中創(chuàng)建包example4_8,在該包中創(chuàng)建公共類(lèi),導(dǎo)入chapter4包Book類(lèi),并創(chuàng)建對(duì)象調(diào)用Book類(lèi)中的方法。3Java常用的包Java常用的包Java常用的包包說(shuō)明java.langJava語(yǔ)言的核心類(lèi)庫(kù),包含了運(yùn)行Java程序必不可少的系統(tǒng)類(lèi),如基本數(shù)據(jù)類(lèi)型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類(lèi)等。每個(gè)Java程序運(yùn)行時(shí),系統(tǒng)默認(rèn)加載這個(gè)包java.util包含處理時(shí)間的Date類(lèi),處理變長(zhǎng)數(shù)組的Vector類(lèi),實(shí)現(xiàn)棧的Stack類(lèi)和實(shí)現(xiàn)哈希(散列)表的HashTable類(lèi)等java.awt實(shí)現(xiàn)構(gòu)建圖形用戶界面(GUI)的類(lèi)庫(kù)。例如,低級(jí)繪圖操作的Graphics類(lèi),圖形界面組件和布局管理類(lèi)(如Checkbox類(lèi)、Container類(lèi)、LayoutManger接口等),以及用戶界面交互控制和事件響應(yīng)的Event類(lèi)java.io實(shí)現(xiàn)Java程序與操作系統(tǒng)、用戶界面及其他Java程序進(jìn)行數(shù)據(jù)交換的類(lèi)庫(kù)java.sql實(shí)現(xiàn)JDBC(Javadatabaseconnection)的類(lèi)庫(kù),動(dòng)態(tài)地安裝不同驅(qū)動(dòng)程序來(lái)訪問(wèn)不同數(shù)據(jù)源java.applet實(shí)現(xiàn)運(yùn)行于Internet瀏覽器中的JavaApplet的工具類(lèi)庫(kù)實(shí)現(xiàn)網(wǎng)絡(luò)功能的類(lèi)庫(kù),如實(shí)現(xiàn)套接字通信的Socket類(lèi)、ServerSocket類(lèi);編寫(xiě)用戶自己的Telnet、FTP、郵件服務(wù)等實(shí)現(xiàn)網(wǎng)上通信的類(lèi);用于訪問(wèn)Internet上資源和進(jìn)行CGl調(diào)用的類(lèi),如URL等4課后習(xí)題課后習(xí)題創(chuàng)建一個(gè)包,叫“com.test.example“,并在該包下創(chuàng)建類(lèi)”Example1”典型案例—模擬貸款系統(tǒng)01模擬貸款系統(tǒng)CONTENTS目錄02課后練習(xí)1模擬貸款系統(tǒng)模擬貸款系統(tǒng)題目描述模擬貸款系統(tǒng),根據(jù)輸入的貸款年利率、貸款年限和貨款總額,計(jì)算等額本息情況下的月均還款額和總還款額并輸出。等額本息情況下的計(jì)算方法
模擬貸款系統(tǒng)案例要求創(chuàng)建包c(diǎn)hapter4.example4_9,在該包下創(chuàng)建Loan類(lèi)和LoanTest類(lèi)。Loan類(lèi)實(shí)現(xiàn)計(jì)算等額本息情況下的月均還款額和總還款額,LoanTest類(lèi)實(shí)現(xiàn)輸入貸款年利率、貸款年限和貨款總額,然后創(chuàng)建Loan類(lèi)的對(duì)象,最后調(diào)用Loan類(lèi)中的方法計(jì)算月均還款額和總還款額并輸出。2課后習(xí)題課后習(xí)題定義一個(gè)店員類(lèi)SalesClerk,包括一個(gè)推薦圖書(shū)的成員方法,實(shí)現(xiàn)顧客咨詢(xún)哪一類(lèi)圖書(shū),店員就推薦該類(lèi)圖書(shū)的其中一本。例如,顧客咨詢(xún)“Java”,店員推薦《Java程序設(shè)計(jì)教程(第2版)》。感謝大家觀看Java程序設(shè)計(jì)教程(第2版)內(nèi)部類(lèi)01什么是封裝02封裝的案例CONTENTS目錄03課后練習(xí)1什么是封裝什么是封裝封裝就是把客觀事物封裝成抽象的類(lèi),并規(guī)定類(lèi)中的變量和方法只讓可信的類(lèi)或?qū)ο蟛僮鳌#?)將客觀事物封裝成抽象的類(lèi),類(lèi)中的變量和方法只能通過(guò)類(lèi)名或?qū)ο竺印?”的方式來(lái)訪問(wèn)。(2)將類(lèi)的某些變量和方法隱藏在類(lèi)內(nèi)部,不允許用戶直接訪問(wèn),或者留下少量的方法供外部訪問(wèn)。2封裝的案例封裝的案例創(chuàng)建員工通信錄定義一個(gè)員工類(lèi)Employee,包括4個(gè)私有成員變量name(姓名)、age(年齡)、phone(聯(lián)系電話)和address(家庭住址)。如果用戶編程時(shí)想要實(shí)現(xiàn)對(duì)這4個(gè)成員變量的賦值和取值,可在該類(lèi)中定義公有方法對(duì)變量進(jìn)行賦值和取值,然后用戶可調(diào)用該公有方法實(shí)現(xiàn)其功能。3課后練習(xí)課后練習(xí)定義一個(gè)職位類(lèi)Position,包括4個(gè)私有成員變量title(職位名稱(chēng))、salary(薪水)、requirement(職位要求)和address(地址)。如果用戶編程時(shí)想要實(shí)現(xiàn)對(duì)這4個(gè)成員變量的賦值和取值,可在該類(lèi)中定義公有方法對(duì)變量進(jìn)行賦值和取值,然后用戶可調(diào)用該公有方法實(shí)現(xiàn)其功能。繼承01extends關(guān)鍵字02方法重寫(xiě)CONTENTS目錄03super關(guān)鍵字04課后練習(xí)1extends關(guān)鍵字extends關(guān)鍵字語(yǔ)法格式[類(lèi)修飾符]class<子類(lèi)名>extends<父類(lèi)名>{ …… //類(lèi)實(shí)體}注意:Java僅支持單繼承,即一個(gè)類(lèi)只能有一個(gè)父類(lèi)。同時(shí),類(lèi)的繼承不改變類(lèi)成員的訪問(wèn)權(quán)限,也就是說(shuō),如果父類(lèi)的成員是公有的、被保護(hù)的或默認(rèn)的,它的子類(lèi)仍具有相應(yīng)的特性,且子類(lèi)不能繼承父類(lèi)的構(gòu)造方法。extends關(guān)鍵字案例定義自行車(chē)類(lèi)Bicycle,包括成員變量wheel(車(chē)輪)和剎車(chē)方法brake()。然后定義ElectroBicycle(電動(dòng)自行車(chē))類(lèi),繼承Bicycle類(lèi),并新增成員變量battery(電量)。2方法重寫(xiě)方法重寫(xiě)方法重寫(xiě)方法重寫(xiě)(override)又稱(chēng)為方法覆蓋,它在子類(lèi)中創(chuàng)建一個(gè)與父類(lèi)具有相同名稱(chēng)、相同返回值類(lèi)型、相同參數(shù)列表的方法,只是方法體不同,以實(shí)現(xiàn)不同于父類(lèi)的功能。當(dāng)父類(lèi)中的方法無(wú)法滿足子類(lèi)需求或子類(lèi)具有特有功能的時(shí)候,需要重寫(xiě)方法。方法的訪問(wèn)控制權(quán)限只能從小的范圍修改到大的范圍(private<friendly<protected<public)。重寫(xiě)方法一定不能拋出新的檢査異?;蛘弑缺恢貙?xiě)方法聲明更加寬泛的異常。例如,父類(lèi)的一個(gè)方法聲明了一個(gè)檢査異常IOException,在重寫(xiě)這個(gè)方法時(shí)不能拋出Exception,因?yàn)镋xception是IOException的父類(lèi),只能拋出IOException的子類(lèi)異常。不能重寫(xiě)構(gòu)造方法。子類(lèi)和父類(lèi)在同一個(gè)包中時(shí),子類(lèi)可以重寫(xiě)父類(lèi)的所有成員方法,除了聲明為static、private和final的方法;子類(lèi)和父類(lèi)不在同一個(gè)包中時(shí),子類(lèi)只能重寫(xiě)父類(lèi)的聲明為public和protected的非final方法。注意:方法重寫(xiě)案例定義一個(gè)學(xué)生類(lèi)Student,包括成員變量name(姓名)和類(lèi)別方法category(),然后定義兩個(gè)Student的子類(lèi)Undergraduate和Graduate,在子類(lèi)中重寫(xiě)category()方法,輸出不同的學(xué)生類(lèi)別,最后定義測(cè)試類(lèi)StudentTest,在main()方法中創(chuàng)建對(duì)象后,調(diào)用category()方法。3super關(guān)鍵字super關(guān)鍵字super關(guān)鍵字是一個(gè)引用變量,用于引用直接父類(lèi)對(duì)象。用法:(1)調(diào)用直接父類(lèi)的構(gòu)造方法。由于子類(lèi)不能繼承父類(lèi)的構(gòu)造方法,因此,要調(diào)用父類(lèi)的構(gòu)造方法時(shí),必須在子類(lèi)構(gòu)造方法體的第一行使用super關(guān)鍵字。該方法會(huì)調(diào)用父類(lèi)相應(yīng)的構(gòu)造方法來(lái)完成子類(lèi)對(duì)象的初始化工作。
例如: super(); //調(diào)用直接父類(lèi)的無(wú)參構(gòu)造方法 super(param); //調(diào)用直接父類(lèi)的有參構(gòu)造方法,可有多個(gè)參數(shù)
//實(shí)參列表必須與父類(lèi)構(gòu)造方法對(duì)應(yīng)(2)調(diào)用直接父類(lèi)的成員方法和成員變量。子類(lèi)重寫(xiě)了父類(lèi)的方法后,可以通過(guò)“super.方法名”調(diào)用父類(lèi)原有的成員方法。如果子類(lèi)定義了和父類(lèi)同名的成員變量,此時(shí)父類(lèi)的成員變量被隱藏,可以通過(guò)“super.變量名”調(diào)用父類(lèi)原有的成員變量。4課后習(xí)題課后習(xí)題創(chuàng)建和顯示學(xué)生信息,要求如下。①定義Person類(lèi),在該類(lèi)中定義成員變量name(姓名)、sex(性別)和age(年齡),然后定義有參構(gòu)造方法,初始化成員變量,最后定義成員方法toString()返回姓名、性別和年齡信息。②定義Student類(lèi)繼承Person類(lèi),在該類(lèi)中增加成員變量no(學(xué)號(hào))、scoreEn(英語(yǔ)成績(jī))、scoreMath(數(shù)學(xué)成績(jī))和scoreCh(語(yǔ)文成績(jī)),然后增加成員方法aver()、max()和min()分別返回三門(mén)功課的平均分、最高分和最低分,最后重寫(xiě)toString()方法返回姓名、性別、年齡、學(xué)號(hào)、平均分、最高分和最低分信息。多態(tài)01編譯時(shí)多態(tài)02運(yùn)行時(shí)多態(tài)CONTENTS目錄03課后練習(xí)1編譯時(shí)多態(tài)編譯時(shí)多態(tài)什么是編譯時(shí)多態(tài)編譯時(shí)多態(tài)是靜態(tài)的,主要是指方法的重載,根據(jù)參數(shù)列表的不同來(lái)區(qū)分不同的方法。
例如:
//pay()方法描述所有超市都支持現(xiàn)金付款 publicstaticStringpay(StringpayStyle){ return"所有超市都支持"+payStyle; } //pay()方法描述大型商超還支持刷卡付款
publicstaticStringpay(StringmarketStyle,StringpayStyle){ returnmarketStyle+"還支持"+payStyle; } //pay()方法描述計(jì)算本次支付金額 publicstaticStringpay(floatmoney){ return"本次支付"+money+"元"; }2運(yùn)行時(shí)多態(tài)運(yùn)行時(shí)多態(tài)什么是運(yùn)行時(shí)多態(tài)Java實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)有3個(gè)必要條件:繼承、重寫(xiě)和向上轉(zhuǎn)型。只有滿足這3個(gè)條件,才能在同一個(gè)繼承結(jié)構(gòu)中使用統(tǒng)一的邏輯處理不同的對(duì)象,從而執(zhí)行不同的行為。(1)繼承:必須存在有繼承關(guān)系的子類(lèi)和父類(lèi)。(2)重寫(xiě):子類(lèi)對(duì)父類(lèi)中某些方法進(jìn)行重新定義。(3)向上轉(zhuǎn)型:將子類(lèi)的對(duì)象賦給父類(lèi)對(duì)象,只有這樣該對(duì)象才既能調(diào)用父類(lèi)的方法,又能調(diào)用子類(lèi)的方法。運(yùn)行時(shí)多態(tài)案例定義動(dòng)物類(lèi)Animal,包括成員變量species(種類(lèi))、吃方法eat()和奔跑方法run();然后定義兩個(gè)子類(lèi)Cat和Dog,都繼承Animal類(lèi),并重寫(xiě)eat()方法;最后定義測(cè)試類(lèi)AnimalTest,在main()方法中分別基于不同子類(lèi)Cat和Dog實(shí)例化Animal類(lèi)的對(duì)象。3課后練習(xí)課后練習(xí)下面程序運(yùn)行的結(jié)果是_______classPclassx{ protectedvoidf(){ System.out.print("A'smethod!"); }}publicclassTemp2extendsPclassx{ protectedvoidf(){ System.out.println("B'smethod!"); } publicstaticvoidmain(String[]args){ Pclassxa=newTemp2(); a.f(); }}抽象類(lèi)與抽象方法01抽象類(lèi)02抽象方法CONTENTS目錄03課后練習(xí)1抽象類(lèi)抽象類(lèi)什么是抽象類(lèi)抽象類(lèi)即為類(lèi)的抽象,是對(duì)相似類(lèi)的歸納與總結(jié)
語(yǔ)法格式:
publicabstractclass類(lèi)名{ //聲明抽象類(lèi) …… }注意:抽象類(lèi)是不能實(shí)例化的,也就是說(shuō),不能基于抽象類(lèi)來(lái)創(chuàng)建對(duì)象。2抽象方法抽象方法什么是抽象方法只包含方法聲明,而不包含方法體,它的具體實(shí)現(xiàn)由其派生出的各子類(lèi)來(lái)完成,這使得程序的功能描述和功能實(shí)現(xiàn)得以分離。注意:抽象類(lèi)也可以包含普通成員變量和成員方法。但是,抽象方法只能出現(xiàn)在抽象類(lèi)中。在子類(lèi)中,必須重寫(xiě)父類(lèi)中所有的抽象方法。
語(yǔ)法格式:
publicabstract返回值類(lèi)型方法名(); //聲明抽象方法,必須加分號(hào)抽象方法案例定義抽象的平面圖形類(lèi)PlaneGraphics,然后定義長(zhǎng)方形子類(lèi)Rectangle和橢圓形子類(lèi)Eclipse,分別覆蓋抽象類(lèi)中的抽象方法,使程序能夠用一種方法計(jì)算不同類(lèi)型圖形的面積。3課后練習(xí)課后練習(xí)下面關(guān)于抽象類(lèi)和抽象方法說(shuō)法正確的是()。A.抽象類(lèi)中至少有一個(gè)抽象方法B.抽象類(lèi)中只能定義抽象方法C.利用抽象類(lèi)也可以創(chuàng)建對(duì)象D.抽象方法只包含方法聲明,不包含
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 竹林改造課程設(shè)計(jì)
- 企業(yè)數(shù)字化轉(zhuǎn)型升級(jí)戰(zhàn)略投資合作協(xié)議
- 2025年建筑施工安全文明施工專(zhuān)項(xiàng)審計(jì)合同
- 普通企業(yè)合同管理辦法實(shí)施細(xì)則
- 2024石材干掛工程設(shè)計(jì)與施工合同管理協(xié)議2篇
- 答辯計(jì)時(shí)器課程設(shè)計(jì)
- 英文熱身動(dòng)作課程設(shè)計(jì)
- 云計(jì)算服務(wù)提供商合作合同
- 互聯(lián)網(wǎng)房地產(chǎn)租賃合同協(xié)議
- 課程計(jì)劃名詞解釋
- 痤瘡詳細(xì)版課件
- 國(guó)管局住房制度改革相關(guān)政策解答
- 無(wú)縫鋼管服務(wù)方案
- 排澇泵站養(yǎng)護(hù)方案范本
- XX醫(yī)院臨床醫(yī)療質(zhì)量考核通用記錄表
- 城市交通樞紐運(yùn)營(yíng)故障應(yīng)急預(yù)案
- 料場(chǎng)加工施工方案
- 【淺析人工智能在石油行業(yè)中的應(yīng)用3400字(論文)】
- 2023-2024學(xué)年上海市交大附中嘉定高二物理第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 湖北省十堰市竹山縣2023-2024學(xué)年三上數(shù)學(xué)期末經(jīng)典模擬試題含答案
- 產(chǎn)品試制前準(zhǔn)備狀態(tài)檢查報(bào)告
評(píng)論
0/150
提交評(píng)論