《Java程序設(shè)計(jì)教程(第2版)》全套教學(xué)課件_第1頁
《Java程序設(shè)計(jì)教程(第2版)》全套教學(xué)課件_第2頁
《Java程序設(shè)計(jì)教程(第2版)》全套教學(xué)課件_第3頁
《Java程序設(shè)計(jì)教程(第2版)》全套教學(xué)課件_第4頁
《Java程序設(shè)計(jì)教程(第2版)》全套教學(xué)課件_第5頁
已閱讀5頁,還剩860頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java程序設(shè)計(jì)教程(第2版)全套可編輯PPT課件Java概述01Java的產(chǎn)生與發(fā)展02Java的特點(diǎn)CONTENTS目錄1Java的產(chǎn)生與發(fā)展Java的產(chǎn)生與發(fā)展Sun公司開發(fā)了一種面向?qū)ο笳Z言,命名Oak。19911995.5Sun公司正式發(fā)Java語言。1996.1Sun公司發(fā)布了第一個(gè)開發(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)用程序的開發(fā)。企業(yè)版,主要用于企業(yè)級分布式的網(wǎng)絡(luò)程序。微型版,主要用于嵌入式系統(tǒng)的開發(fā)。核心2Java的特點(diǎn)Java的特點(diǎn)總的來說,Java語言具有以下特點(diǎn):(1)Java語言是簡單的。(2)Java語言是面向?qū)ο蟮摹#?)Java語言是分布式的。(4)Java語言是解釋執(zhí)行的。(5)Java語言是可移植的。(6)Java語言是安全的。(7)Java語言是健壯的。(8)Java語言是多線程的。(9)Java語言是高性能的。(10)Java語言是動(dòng)態(tài)的。第一個(gè)Java程序01最簡單的Java程序結(jié)構(gòu)02Java的編程規(guī)范03Java程序的開發(fā)流程04總結(jié)CONTENTS目錄1最簡單的Java程序結(jié)構(gòu)最簡單的Java程序結(jié)構(gòu)/*Welcome.java*/publicclassWelcome{publicstaticvoidmain(Stringargs[]){ //輸出字符串System.out.println("歡迎學(xué)習(xí)Java語言!"); }}“/*”和“*/”是Java語言的多行注釋信息class用來定義一個(gè)新的類,其類名是Welcome,它是一個(gè)公共類(public)整個(gè)類定義用大括號(hào){}括起來,其內(nèi)部稱為類體1.public用于表示訪問權(quán)限;2.static表示該方法是一個(gè)靜態(tài)方法;3.void表示main()沒有返回值;4.Stringargs[]為main()傳入的參數(shù),一般是通過命令傳入的參數(shù);5.main()為Java程序的入口,并且創(chuàng)建main()只能按照固定寫法,否則不能作為Java程序的入口。雙斜線“//”后面的內(nèi)容是Java語言的單行注釋信息System表示系統(tǒng)類,out是PrintStream類的對象,println是out對象的方法,其功能是輸出“”里面的內(nèi)容并換行2Java的編程規(guī)范Java的編碼規(guī)范1.代碼注釋代碼注釋是對程序中的代碼進(jìn)行解釋說明,是程序的非執(zhí)行部分。在程序代碼中適當(dāng)?shù)靥砑幼⑨?,可以提高程序的可讀性和可維護(hù)性。Java語言提供了3種添加注釋的方法,分別是單行注釋、多行注釋和文檔注釋。(1)單行注釋標(biāo)記為“//”

例如://輸出一句話(2)多行注釋標(biāo)記為“/**/”

例如:/*

開發(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ìn)量盡量相同。類、方法、條件語句及循環(huán)語句中的代碼都采用縮進(jìn)方式。例如:

提示:如果使用Tab鍵縮進(jìn),在代碼編輯器中可將1個(gè)Tab鍵視為4個(gè)空格。Java的編碼規(guī)范4.換行Java每行代碼的長度最好不要超過120個(gè)字符。對于過長的代碼,建議進(jìn)行換行。

沒有換行有換行3Java程序的開發(fā)流程Java程序的開發(fā)流程需求分析算法設(shè)計(jì)編寫程序編譯程序運(yùn)行程序編寫程序文檔分析代碼是做什么的,輸入的參數(shù)是什么,輸出的參數(shù)是什么對要解決的問題設(shè)計(jì)出解決問題的方法和具體步驟。用Java語言編寫代碼,實(shí)現(xiàn)需求分析和算法設(shè)計(jì)的功能用Java的編譯器,將寫好的代碼,編譯成為計(jì)算機(jī)所能識(shí)別的,能夠運(yùn)行的二進(jìn)制文件將編譯好的二進(jìn)制文件運(yùn)行,真正能夠處理需求分析所提出的問題編寫用戶的使用說明書4總結(jié)總結(jié)1.最簡單的Java程序的基本結(jié)構(gòu)注釋類的定義main()方法main()方法中的內(nèi)容2.編碼規(guī)范代碼注釋、空格和空行、縮進(jìn)、換行3.Java程序的開發(fā)流程需求分析->算法設(shè)計(jì)->編寫程序->編譯程序->運(yùn)行程序->編寫程序文檔搭建Java開發(fā)環(huán)境01下載和安裝JDK02配置JDK的環(huán)境變量03開發(fā)簡單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ì)對Path變量進(jìn)行配置,而這種配置可能會(huì)對JDK的配置產(chǎn)生影響。配置JDK的環(huán)境變量3開發(fā)簡單Java程序開發(fā)簡單Java程序1.創(chuàng)建Java程序的文件夾E:\allworkspace\java_workspace2.創(chuàng)建Java程序的文件HelloWorld.java3.編寫Java程序的代碼/*HelloWorld.java*///創(chuàng)建類publicclassHelloWorld{ //主方法 publicstaticvoidmain(Stringargs[]){ //主方法 //輸出字符串 System.out.println("HelloWorld!"); }}開發(fā)簡單Java程序4.編譯和運(yùn)行Java程序編譯命令:javac文件名.java運(yùn)行命令:java文件名4課后作業(yè)課后作業(yè)1.動(dòng)手安裝JDK2.配置Java環(huán)境變量3.編寫自己的第一個(gè)Java程序使用集成開發(fā)工具Eclipse01Eclipse簡介02下載和安Eclipse03Eclipse的使用04課后練習(xí)CONTENTS目錄1Eclipse的簡介Eclipse的簡介1.Eclipse已經(jīng)是最流行的Java集成開發(fā)工具之一。2.Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。3.Eclipse自身的核心框架是非常小的,其他所有功能都是以

插件的形式附加到該核心框架上的。4.Eclipse的用途并不限于Java語言,支持諸如C/C++等語言。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類Eclipse的使用4.編寫代碼在控制臺(tái)打?。簹g迎使用Eclipse!Eclipse的使用5.運(yùn)行4課后練習(xí)課后練習(xí)1.自己動(dòng)手安裝并漢化Eclipse2.創(chuàng)建Java項(xiàng)目,編寫代碼,在控制臺(tái)中打印《鋤禾》這首詩感謝大家觀看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)對變量、數(shù)組、方法和類等進(jìn)行標(biāo)識(shí),這個(gè)記號(hào)就稱為標(biāo)識(shí)符。簡單地講,標(biāo)識(shí)符就是一個(gè)名字。標(biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(1)標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)、美元符號(hào)($)組成,沒有長度限制?!獭獭獭翗?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ū)分大小寫的,如Dog和dog是不同的標(biāo)識(shí)符。(4)常量通常以大寫字母英文單詞命名,變量通常以小寫字母英文單詞命名。

如果一個(gè)變量名由多個(gè)單詞構(gòu)成,則第一個(gè)單詞小寫,第二個(gè)單詞首字母大寫。(5)類標(biāo)識(shí)符通常以大寫英文字母開始。標(biāo)識(shí)符2.標(biāo)識(shí)符的定義規(guī)范(6)Java關(guān)鍵字、保留字等不能作為用戶自定義標(biāo)識(shí)符使用。√××2關(guān)鍵字關(guān)鍵字1.什么是關(guān)鍵字關(guān)鍵字(keyword)是指編程語言預(yù)先定義的標(biāo)識(shí)符,在程序中有其特殊的含義,用戶不能將其用作自定義標(biāo)識(shí)符。關(guān)鍵字2.Java中有哪些關(guān)鍵字關(guān)鍵字2.Java中有哪些關(guān)鍵字其中,保留字(reservedword)為Java語言中預(yù)留的但暫時(shí)沒有使用的關(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)行過程中其值可以改變的量,它用于在程序運(yùn)行時(shí)臨時(shí)存放數(shù)據(jù)。變量2.變量的聲明類型變量名1[=初值1][,變量名2[=初值2]……];注意:1.變量初始化后還可以對變量重新賦值,重新賦值后,新的值將會(huì)覆蓋原來的值。2.Java語言中允許使用漢字或其他語言文字作為變量名。3.聲明變量時(shí)應(yīng)選擇有意義的單詞作為變量名變量2.變量的有效范圍(1)成員變量:在類體中定義的變量,它在整個(gè)類中,自聲明變量處開始到整個(gè)類結(jié)束的范圍內(nèi)有效。變量2.變量的有效范圍(2)局部變量:在類的方法內(nèi)部定義的變量,它只在當(dāng)前定義的方法中,自變量聲明處開始到方法結(jié)束范圍內(nèi)有效,不能用于類的其他方法。變量3.注意問題(1)為了使變量在類或方法的整個(gè)范圍內(nèi)有效,通常將變量聲明到類或方法的最上方。(2)變量在聲明時(shí)可以不賦初值,但在使用變量前必須對其賦值。(3)在小范圍內(nèi)使用大范圍變量的時(shí)候,有些情況下,小范圍將其修改后,會(huì)影響大范圍變量的值。(4)局部變量盡量避免與全局變量重名。2常量常量1.什么是常量常量是指在程序運(yùn)行過程中其值不能改變的量,通常也稱為“final變量”,它在整個(gè)程序中只能賦值一次。2.語法final類型常量名[=初值];使用場景:一般來說,如果在程序中多處引用某個(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ù)類型01數(shù)據(jù)類型分類02整型07課后練習(xí)CONTENTS目錄03字符型04浮點(diǎn)型布爾型0506數(shù)據(jù)類型轉(zhuǎn)換1數(shù)據(jù)類型分類數(shù)據(jù)類型分類Java提供了8種基本數(shù)據(jù)類型來存儲(chǔ)數(shù)值型、字符型和布爾型數(shù)據(jù)2整型整型1.整型的取值范圍數(shù)據(jù)類型關(guān)鍵字內(nèi)存空間(位)取值范圍字節(jié)型byte8?27~27?1(?128~127)短整型short16?215~215?1(?32768~32767)整型int32?231~231?1(?2147483648~2147483647)長整型long64?263~263?1整型2.整型的3種表示形式(1)十進(jìn)制整數(shù):由正、負(fù)號(hào)和數(shù)字0~9組成,但數(shù)字部分不能以0開頭,例如:intx=10,y=-24;(2)八進(jìn)制整數(shù):由正、負(fù)號(hào)和數(shù)字0~7組成,數(shù)字部分以0開頭,例如:shortx=010,y=-024;(3)十六進(jìn)制整數(shù):由正、負(fù)號(hào),數(shù)字0~9,字母A~F或a~f(表示數(shù)值10~15)組成,數(shù)字部分以0X或0x開頭,例如:intx=0xffff,y=-0X3D4;3浮點(diǎn)型浮點(diǎn)型1.浮點(diǎn)型的取值范圍數(shù)據(jù)類型關(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é)表示法,它常用來表示很大或很小的數(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)括起來的一個(gè)字符,它是區(qū)分大小寫的,如'A'和'a'是兩個(gè)不同的字符。除此之外,還可以使用字符在Unicode字符集中的位置來表示,如字符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回車符\'單引號(hào)字符\n換行符\"雙引號(hào)字符\b退格符\\反斜杠字符\f換頁符一些無法正常顯示的字符,如回車符、換行符等,可用轉(zhuǎn)義字符表示5布爾型布爾型布爾型數(shù)據(jù)只有true和false兩個(gè)值,分別代表邏輯“真”和邏輯“假”。布爾型使用關(guān)鍵字boolean表示,它所占的內(nèi)存空間為8位。例如:6數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換1.什么是數(shù)據(jù)類型轉(zhuǎn)換Java在進(jìn)行賦值或運(yùn)算時(shí)要對數(shù)據(jù)類型進(jìn)行檢查,如果數(shù)據(jù)類型不一致,則要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。2.基本數(shù)據(jù)類型優(yōu)先級從低到高順序(byte、short、char)→int→long→float→double數(shù)據(jù)類型轉(zhuǎn)換3.自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換轉(zhuǎn)換場景:?當(dāng)數(shù)據(jù)從低級類型向高級類型轉(zhuǎn)換時(shí),系統(tǒng)將自動(dòng)執(zhí)行,編程人員無須進(jìn)行任何操作,這種轉(zhuǎn)換稱為自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換。?當(dāng)參與運(yùn)算的數(shù)據(jù)包含多種數(shù)據(jù)類型時(shí),低級數(shù)據(jù)類型的數(shù)據(jù)將被自動(dòng)轉(zhuǎn)換為高級數(shù)據(jù)類型,以參與運(yùn)算。例如://定義long型變量xlong

x=10;//由于float型優(yōu)先級比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ù)類型轉(zhuǎn)換4.強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換轉(zhuǎn)換場景:?當(dāng)把數(shù)據(jù)類型優(yōu)先級較高的數(shù)據(jù)賦值給數(shù)據(jù)類型優(yōu)先級相對較低的變量時(shí),必須進(jìn)行強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換。語法格式:

(數(shù)據(jù)類型)數(shù)據(jù)注意:進(jìn)行強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換時(shí),可能會(huì)產(chǎn)生數(shù)據(jù)溢出或精度損失。3課后練習(xí)課后練習(xí)1.下面語句不能編譯成功的是()。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)先級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ù)包括常量、變量等。分

類運(yùn)算符名

稱示例運(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)注意的問題:?

不同類型的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時(shí),運(yùn)算結(jié)果與精度最高的數(shù)據(jù)類型一致。?

對于除法運(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á)式通過代碼比較自增、自減運(yùn)算符前置與后置的不同。案例:2關(guān)系運(yùn)算符及其表達(dá)式關(guān)系運(yùn)算符與表達(dá)式關(guān)系表達(dá)式由關(guān)系運(yùn)算符和操作數(shù)組成,用來比較兩個(gè)操作數(shù)的大小,比較的結(jié)果是一個(gè)布爾值(true或false)。操作數(shù)可以是算術(shù)表達(dá)式、布爾表達(dá)式、整數(shù)、浮點(diǎn)數(shù)和字符等。運(yùn)算符名

稱示

例運(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)行比較。常見字符的位置值由小到大的順序是:空格<'0'<…<'9'<'A'<…<'Z'<'a'<…<'z'<任何漢字。3邏輯運(yùn)算符及其表達(dá)式邏輯運(yùn)算符與表達(dá)式邏輯表達(dá)式由邏輯運(yùn)算符和操作數(shù)組成。操作數(shù)可以是布爾值或布爾表達(dá)式,運(yùn)算結(jié)果是布爾值。運(yùn)算符名

稱示

例運(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)算符又分別稱“短路與”和“短路或”。邏輯運(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)算符名

稱示例說

明&按位與A&BA與B對應(yīng)的兩個(gè)二進(jìn)制位均為1時(shí),結(jié)果才為1,否則為0|按位或A|BA與B對應(yīng)的兩個(gè)二進(jìn)制位有一個(gè)為1時(shí),結(jié)果就為1^按位異或A^BA與B對應(yīng)的兩個(gè)二進(jìn)制位不同時(shí),結(jié)果為1,否則為0~按位取反~A對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)位>>>

無符號(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無符號(hào)右移B位)6條件運(yùn)算符及其表達(dá)式條件運(yùn)算符與表達(dá)式條件運(yùn)算符屬于三元運(yùn)算符,即包含3個(gè)操作對象。語法格式:表達(dá)式1?表達(dá)式2:表達(dá)式3;例如:7運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級決定了表達(dá)式中運(yùn)算符執(zhí)行的先后順序,如果兩個(gè)運(yùn)算符有相同的優(yōu)先級,則根據(jù)它們的結(jié)合性決定先后順序。優(yōu)先級運(yùn)算符結(jié)合性1()從左到右2+(正)、?(負(fù))、++、??、~、!從右向左3*、/、%從左向右4+(加)、?(減)從左向右5<<、>>、>>>從左向右6<、<=、>、>=從左向右7==、!=從左向右8&從左向右9^從左向右10|從左向右11&&從左向右12||從左向右13?:從右向左14=、+=、?=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=從右向左運(yùn)算符的優(yōu)先級如果想要改變它們的計(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.下面語句的輸出結(jié)果是__________。!(3>5&5<7|8+9<23)Java程序設(shè)計(jì)教程

之典型案例01計(jì)算球體體積02課后作業(yè)CONTENTS目錄1計(jì)算球體體積典型案例問題描述

編寫一個(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ù)判斷條件是否滿足來決定是否執(zhí)行指定操作。重復(fù)執(zhí)行某些操作,直到不滿足循環(huán)條件才終止循環(huán)條件語句01if語句02switch語句03課后作業(yè)CONTENTS目錄1if語句if語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句簡單if語句的語法格式如下:if(表達(dá)式){

語句塊}注意:若if判斷語句的語句代碼塊中僅有一條執(zhí)行語句,可省略{}布爾表達(dá)式語句塊truefalseif語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句if語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句if…else…語句的語法格式如下:if(表達(dá)式){

語句塊1}else{

語句塊2}布爾表達(dá)式語句塊1true語句塊2falseif語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句if語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句if…elseif…else…語句的語法格式如下:if(表達(dá)式1){

語句塊1}elseif(表達(dá)式2){}{

語句塊2}…elseif(表達(dá)式n){}{

語句塊n}else{

語句塊n+1}truetruetruefalsefalsefalseif語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句if語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句嵌套的if語句的語法格式如下:if(表達(dá)式1){ if(表達(dá)式2){

語句塊1 } else{

語句塊2 }}else{ if(表達(dá)式3){

語句塊3 } else{

語句塊4 }}布爾表達(dá)式1語句1true語句4false布爾表達(dá)式2布爾表達(dá)式3語句2語句3truefalsetruefalseif語句分類簡單的if語句if…else…語句if…elseif…else…語句嵌套的if語句2switch語句switch語句if-elseif-else語句分支較多時(shí),會(huì)降低程序的可讀性。Java中的switch語句可以通過數(shù)據(jù)匹配的方式實(shí)現(xiàn)程序的多分支控制,其語法格式如下:switch(變量){ case變量的可能結(jié)果1:[語句塊1][break;] case變量的可能結(jié)果2:[語句塊2][break;]

… case變量的可能結(jié)果n:[語句塊n][break;] [default:語句塊n+1]}switch后面表達(dá)式的值必須是整型、字符型或字符串類型;case后面常量表達(dá)式的值必須與switch后面表達(dá)式的值的數(shù)據(jù)類型相同;方括號(hào)括起來的內(nèi)容是可選項(xiàng)。switch語句注意事項(xiàng):同一個(gè)switch語句中,各個(gè)case后的常量表達(dá)式的值必須互不相等。case后的語句可以是一條語句,也可以是多條語句,此時(shí)多條語句不必用大括號(hào)括起來。default可以省略,省略時(shí)如果沒有與switch表達(dá)式相匹配的case常量,則不執(zhí)行任何語句,程序轉(zhuǎn)到switch語句后的下一條語句執(zhí)行。break語句和switch語句最外層的右大括號(hào)是退出switch選擇結(jié)構(gòu)的出口,遇到第1個(gè)break即終止執(zhí)行switch語句,如果程序沒有break語句,則在執(zhí)行完某個(gè)case語句后,將繼續(xù)執(zhí)行下一個(gè)case語句,直到遇到switch語句的右大括號(hào)為止。因此,通常在每個(gè)case語句后增加一個(gè)break語句,來達(dá)到終止switch語句執(zhí)行的目的。switch語句案例:3課后作業(yè)課后練習(xí)下面if語句語法正確的是(

)。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)語句01while語句02do-while語句05課后練習(xí)CONTENTS目錄for語句03循環(huán)嵌套041while語句while語句1.while語句的語法格式while(表達(dá)式){

語句塊 //循環(huán)體}表達(dá)式語句塊truefalsewhile語句2.while語句的注意事項(xiàng)變量初始化描述要完整、準(zhǔn)確。在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。while語句3.案例分析使用while語句求S=1+2+3+…+100的值。2do-while語句do-while語句1.do-while語句的語法格式do{

語句塊 //循環(huán)體}while(表達(dá)式);表達(dá)式語句塊truefalsedo-while語句2.案例分析使用do-while語句求S=1+2+3+…+100的值。3for語句for語句1.for語句的語法格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3){

語句塊 //循環(huán)體}表達(dá)式1:通常是賦值表達(dá)式,實(shí)現(xiàn)循環(huán)變量的初始化。只在循環(huán)開始前執(zhí)行一次。表達(dá)式2:通常是關(guān)系表達(dá)式或邏輯表達(dá)式,是循環(huán)是否繼續(xù)的判斷依據(jù)。如果其值為true,則執(zhí)行循環(huán)體,如果為false則結(jié)束循環(huán)。表達(dá)式3:用來描述循環(huán)變量的變化,多數(shù)情況下為自增或自減表達(dá)式,實(shí)現(xiàn)對循環(huán)變量的修改。例如:for(inti=1;i<=10;i++){

語句塊}for語句2.案例分析使用for語句實(shí)現(xiàn),輸入一個(gè)整數(shù),輸出該整數(shù)的所有因子。4循環(huán)嵌套循環(huán)嵌套1.什么是循環(huán)嵌套一個(gè)循環(huán)語句的循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。while語句、do-while語句和for語句可以互相嵌套,自由組合。例如:for(inti=1;i<5;i++){ for(intj=0;j<i;j++){ System.out.print("$");}}循環(huán)嵌套2.案例分析編寫程序,輸出以下乘法表。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)語句01跳轉(zhuǎn)語句使用場景03continue語句05課后練習(xí)CONTENTS目錄02break語句04return語句1跳轉(zhuǎn)語句使用場景跳轉(zhuǎn)語句使用場景1.什么是跳轉(zhuǎn)語句跳轉(zhuǎn)語句的作用是使程序從一個(gè)位置跳轉(zhuǎn)到另一個(gè)位置。Java提供了一種在條件滿足的時(shí)候跳出循環(huán)的機(jī)制。即當(dāng)我們不知道循環(huán)將要執(zhí)行的次數(shù)時(shí),可以通過設(shè)置終止循環(huán)的條件來跳出循環(huán)。2.跳轉(zhuǎn)語句的分類break語句continue語句return語句throw語句throw語句會(huì)拋出異常,且后面的語句不會(huì)執(zhí)行,跳到捕獲異常的地方。2break語句break語句1.break語句的使用范圍break語句用于switch語句時(shí),可以使程序跳出switch語句,從而執(zhí)行swith語句之后的語句。break語句用于循環(huán)語句時(shí),可以使程序終止循環(huán)而執(zhí)行循環(huán)后的語句。2.break語句的用例計(jì)算滿足條件的最大整數(shù)n,使得1+2+3+…+n<=1000。循換結(jié)構(gòu)的選擇,for循環(huán)或者while循環(huán)break語句通常用在switch語句及循環(huán)語句中,循環(huán)語句包括for、while、dowhile等。3continue語句continue語句1.continue語句的使用范圍與break語句終止整個(gè)循環(huán)不同的是,continue語句用于終止本次循環(huán),即跳出continue語句后邊的語句,然后執(zhí)行下次循環(huán)。2.continue語句的用例輸出1~20所有的奇數(shù)。取數(shù)的范圍循環(huán)中的非奇數(shù)如何處理4return語句return語句1.return語句的使用范圍return語句用在方法中,以終止當(dāng)前的方法,返回到方法的調(diào)用處。2.return語句的表達(dá)式(1)return語句后面可以帶返回值,也可以不帶。return[表達(dá)式];(2)表達(dá)式可以是常量、變量、對象等。return語句后面表達(dá)式的數(shù)據(jù)類型必須與方法聲明的數(shù)據(jù)類型一致。(3)當(dāng)程序執(zhí)行return語句時(shí),先計(jì)算表達(dá)式的值,然后將表達(dá)式的值返回到調(diào)用該方法的語句處。(4)位于return語句后面的代碼不會(huì)被執(zhí)行,所以return語句通常位于語句塊的最后。3課后練習(xí)課后練習(xí)使用for循環(huán)語句完成break的用例輸出1-30中偶數(shù)典型案例 —猜數(shù)字游戲01猜數(shù)字游戲02課后練習(xí)CONTENTS目錄1猜數(shù)字游戲猜數(shù)字游戲1.案例需求根據(jù)提示(數(shù)字太大或太?。斎霐?shù)字。如果猜錯(cuò)了,則繼續(xù)游戲,猜對了則終止游戲,并輸出猜數(shù)字次數(shù)。2.案例分析使用while循環(huán)實(shí)現(xiàn)多次輸入數(shù)字在循環(huán)中嵌套使用if-elseif-else語句判斷是否猜對定義計(jì)數(shù)變量記錄猜數(shù)字次數(shù),每執(zhí)行一次循環(huán),計(jì)數(shù)變量增加1如果輸入的數(shù)字大于或小于目標(biāo)數(shù)字,則輸出數(shù)字太大或太小的提示,使用continue跳出本次循環(huán)如果輸入的數(shù)字等于目標(biāo)數(shù)字,則輸出猜對提示,并輸出猜數(shù)次數(shù),使用break跳出循環(huán)2課后練習(xí)課后練習(xí)輸出1,2,3,4,5所有的組合整數(shù)(不能出現(xiàn)重復(fù)的數(shù))感謝大家觀看Java程序設(shè)計(jì)教程(第2版)面向?qū)ο蟾攀?1對象和類02面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征CONTENTS目錄對象和類對象屬性行為類:對這些具有共同特征的對象的概括、歸納和抽象表達(dá)。圖4-1類和對象的關(guān)系對象和類面向?qū)ο蟪绦蛟O(shè)計(jì)具有封裝、繼承和多態(tài)3個(gè)基本特征。1.封裝(3)用戶只能通過已定義的接口訪問數(shù)據(jù),避免了外部操作對內(nèi)部數(shù)據(jù)的影響。封裝可提高程序的安全性和可維護(hù)性。(1)封裝是OOP的核心思想,它將對象的屬性和行為封裝起來(其載體是類),隱藏其實(shí)現(xiàn)細(xì)節(jié),用戶只需通過接口來訪問對象。(2)封裝控制了用戶對類的修改和訪問數(shù)據(jù)的程度,從而保證了類內(nèi)部數(shù)據(jù)結(jié)構(gòu)的完整性。對象和類2.繼承繼承:面向?qū)ο蟪绦蛟O(shè)計(jì)中兩個(gè)類之間的一種關(guān)系,是指從已有的類中派生出新的類。被繼承的類繼承父類的類超類或父類子

類繼承父類的屬性和行為增加自己的屬性和行為改變從父類繼承來的行為繼承使父類的代碼得到重用,在繼承父類提供的共同特性的基礎(chǔ)上增加新的代碼,從而使編程不必從頭開始,有效提高了編程效率。對象和類3.多態(tài)多態(tài)性可以用“一個(gè)對外接口,多種實(shí)現(xiàn)方法”來表示。子類繼承父類的屬性和行為后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,這使得同一個(gè)屬性或行為在父類及其各個(gè)子類中具有不同的含義。類01類定義02成員變量07課后練習(xí)CONTENTS目錄03成員方法04方法重載05this關(guān)鍵字06構(gòu)造方法1類定義類定義語法格式[類修飾符]class類名[extends父類名][implements接口名]{//類聲明 …… //類體}注意:類修飾符可以是public、abstract和final等關(guān)鍵字,如果缺省,Java編譯器默認(rèn)該類為friendly類;class是Java的關(guān)鍵字,表示一個(gè)類的聲明;類名必須是合法標(biāo)識(shí)符,通常是一個(gè)有意義的名稱,且首字母一般是大寫字母;extends關(guān)鍵字表示繼承,父類名是要繼承的類名;implements關(guān)鍵字表示類實(shí)現(xiàn)接口。類定義例子2成員變量成員變量語法格式[修飾符]數(shù)據(jù)類型變量名[=初值];注意:修飾符可以是訪問控制修飾符,也可以是static、final等關(guān)鍵字;數(shù)據(jù)類型可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型;在定義成員變量時(shí),可以設(shè)置初值,也可以不設(shè)置初值。如果不設(shè)置初值,Java使用默認(rèn)值對其進(jìn)行初始化。數(shù)據(jù)類型默認(rèn)值byte、short、int、long0float、double0.0char''(空格)booleanfalse引用類型null(空值)成員變量例子Stringname="張三"; //定義學(xué)生姓名,并賦初值為“張三”intage; //定義學(xué)生年齡,默認(rèn)初值為0floatscore; //定義學(xué)生成績,默認(rèn)初值為0.03成員方法成員方法語法格式[修飾符]返回值類型方法名([參數(shù)列表])[throws異常類型]{//方法聲明 …… //方法體}注意:修飾符可以是訪問控制修飾符,也可以是static、abstract、final等關(guān)鍵字;返回值類型用來指定返回?cái)?shù)據(jù)的類型,必須是Java合法的數(shù)據(jù)類型,如果不需要返回值,則使用void關(guān)鍵字;參數(shù)列表表示調(diào)用該方法時(shí)傳遞給方法的參數(shù);[throws異常類型]表示拋出異常;如果定義的方法有返回值,則必須使用return關(guān)鍵字返回一個(gè)指定類型的數(shù)據(jù),并且返回值的類型要與方法返回值的類型一致。成員方法classStudent{ intage; //定義學(xué)生年齡 publicintgetAge(){ //定義成員方法 returnage; //返回學(xué)生年齡 }}例子4方法重載方法重載什么是方法重載Java中方法重載是指一個(gè)類中可以定義名字相同但參數(shù)不同的多個(gè)方法。調(diào)用方法時(shí)會(huì)自動(dòng)根據(jù)不同的參數(shù)選擇相應(yīng)的方法。特點(diǎn):(1)方法名必須相同。(2)方法的參數(shù)不同,包括參數(shù)的個(gè)數(shù)、類型或順序。(3)可以有不同的返回類型。(4)可以有不同的修飾符。(5)可以拋出不同的異常。方法重載案例定義一個(gè)類,在該類中重載pay()方法,描述所有超市都支持現(xiàn)金付款,大型商超還支持刷卡付款,以及計(jì)算本次支付金額。5this關(guān)鍵字this關(guān)鍵字this關(guān)鍵字的幾種用法當(dāng)成員變量的名字和局部變量的名字相同時(shí),如果要在方法中訪問成員變量,可以使用this關(guān)鍵字。this關(guān)鍵字this關(guān)鍵字的幾種用法在方法體中,通過this關(guān)鍵字可訪問當(dāng)前類的成員變量和方法。this關(guān)鍵字this關(guān)鍵字的幾種用法輔助調(diào)用類的構(gòu)造方法尤其是當(dāng)構(gòu)造方法有多個(gè)時(shí)。但要注意的是,this()語句前不能有其他語句。6構(gòu)造方法構(gòu)造方法構(gòu)造方法的特點(diǎn)構(gòu)造方法沒有返回值。構(gòu)造方法的調(diào)用時(shí)機(jī)與一般的方法不同。一般的方法是在需要時(shí)調(diào)用,而構(gòu)造方法則是在創(chuàng)建對象時(shí)自動(dòng)調(diào)用。所以構(gòu)造方法一般用于初始化成員變量。構(gòu)造方法能被訪問控制修飾符修飾,但不能被static、abstract、final等關(guān)鍵字修飾。構(gòu)造方法1.無參構(gòu)造方法構(gòu)造方法2.有參構(gòu)造方法6課后習(xí)題課后習(xí)題下列關(guān)于構(gòu)造方法的敘述中,錯(cuò)誤的是()。A.構(gòu)造方法不可以重載 B.構(gòu)造方法沒有返回值,但不用void聲明C.構(gòu)造方法名與類名相同 D.構(gòu)造方法可以通過new自動(dòng)調(diào)用下列關(guān)于this的說法中,正確的是()。A.this特指對某個(gè)成員的引用 B.this不能在靜態(tài)方法中引用C.this是對某個(gè)類的引用 D.this可以用在構(gòu)造方法中對象01創(chuàng)建對象02使用對象04課后練習(xí)CONTENTS目錄03銷毀對象1創(chuàng)建對象創(chuàng)建對象語法格式類名對象名=new類的構(gòu)造方法(參數(shù)列表);例子Stringname=“張三”;intage=20;Students1=newStudent(name,age);2使用對象使用對象調(diào)用對象的成員變量和成員方法的語法格式<對象名>.<變量名><對象名>.<方法名>([實(shí)參])案例:定義一個(gè)學(xué)生類Student,定義成員變量name(姓名)、age(年齡)和score(成績),并定義有參構(gòu)造方法初始化成員變量,然后定義成員方法display()顯示學(xué)生信息,最后在公共類的主方法中創(chuàng)建對象,通過對象調(diào)用成員變量輸出學(xué)生的年齡,并調(diào)用成員方法輸出學(xué)生的成績。3銷毀對象銷毀對象對象的生命周期創(chuàng)建→使用→銷毀對象如何銷毀:Java有一個(gè)垃圾回收器,它周期性地掃描對象的內(nèi)存區(qū),并將沒有被引用的對象作為垃圾收集起來,定期釋放不再使用的內(nèi)存空間。用戶可以在Java程序中調(diào)用System類的gc()方法來顯式地運(yùn)行垃圾回收程序。可以調(diào)用對象的finalize()方法,釋放對象的內(nèi)存空間。4課后習(xí)題課后習(xí)題設(shè)Point為已定義的類,創(chuàng)建Point對象a的語句是________________。修飾符01訪問控制修飾符02static關(guān)鍵字04final關(guān)鍵字CONTENTS目錄03abstract關(guān)鍵字05課后練習(xí)1訪問控制修飾符訪問控制修飾符什么是訪問控制修飾符訪問控制修飾符是一組限定類、成員變量或成員方法是否可以被程序里的其他部分訪問和調(diào)用的修飾符。訪問控制符的修飾范圍訪問范圍Private(私有)Friendly(默認(rèn))Protected(被保護(hù))Public(公有)同一個(gè)類可訪問可訪問可訪問可訪問同一個(gè)包中的其他類不可訪問可訪問可訪問可訪問不同包中的子類不可訪問不可訪問可訪問可訪問不同包中的非子類不可訪問不可訪問不可訪問可訪問類的訪問控制修飾符只能是public,變量和方法的訪問控制修飾符有4個(gè),分別是private、friendly、protected和public,缺省時(shí)為friendly。2static關(guān)鍵字static關(guān)鍵字static修飾變量static變量也稱為靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別:靜態(tài)變量被所有對象共享,在內(nèi)存中只有一個(gè)副本,在類初次加載的時(shí)候才會(huì)初始化。非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象的時(shí)候被初始化,存在多個(gè)副本,各個(gè)對象擁有的副本互不影響。staticStringname=“李四”;static關(guān)鍵字static修飾方法static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對象就可以進(jìn)行訪問。對于靜態(tài)方法來說,是沒有this的,因?yàn)樗灰栏接谌魏螌ο?,既然都沒有對象,就談不上this了。在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和非靜態(tài)成員方法,因?yàn)榉庆o態(tài)成員方法/變量都是必須依賴具體的對象才能夠被調(diào)用。案例創(chuàng)建一個(gè)累加器,其變量為靜態(tài)變量,方法為靜態(tài)方法,并分別通過類和對象的方式調(diào)用,觀察結(jié)果。3abstract關(guān)鍵字abstract關(guān)鍵字abstract關(guān)鍵字可以修飾類和方法abstract類:帶有abstract修飾符的類稱為抽象類,相當(dāng)于類的抽象。一個(gè)抽象類可以包含抽象方法,它不具備具體功能,只用于衍生出子類。因此,抽象類不能實(shí)例化。abstract方法:帶有abstract修飾的方法稱為抽象方法,是指沒有方法體的方法,且抽象方法只能出現(xiàn)在抽象類中。4final關(guān)鍵字final關(guān)鍵字final關(guān)鍵字可以修飾類、方法和變量final類:帶有final修飾符的類稱為最終類。final方法:帶有final修飾符的方法稱為最終方法。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,子類可以覆蓋父類的方法。但是,如果父類的某個(gè)方法用final關(guān)鍵字修飾,則其子類就不能覆蓋這個(gè)方法。final變量:帶有final修飾符的變量稱為最終變量。final關(guān)鍵字修飾基本數(shù)據(jù)類型的變量時(shí),該變量即為常量。如果final關(guān)鍵字修飾引用數(shù)據(jù)類型的變量,其本身可以修改,但指向該對象或數(shù)組的地址的引用不能修改。5課后習(xí)題課后習(xí)題用private修飾成員變量時(shí),下面說法正確的是()。A.可以被其他包中的類訪問 B.只能被同一個(gè)包中的其他類訪問C.只能被所在類訪問 D.可以被任意public類訪問下列選項(xiàng)中,可以使一個(gè)類中定義的成員變量只能被同一類訪問的是()。A.private B.無修飾符 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)建類在創(chuàng)建好的包處,右鍵單擊,選擇“新建”→“類”選項(xiàng)。2導(dǎo)入包導(dǎo)入包語法格式例子:importchapter4.Book; //單類導(dǎo)入chapter4包中的Book類importchapter4.*; //按需導(dǎo)入chapter4包中的公共類import包名.公共類名;import包名.*;導(dǎo)入包例子://按需導(dǎo)入chapter4包中的公共類importchapter4.*;//按需導(dǎo)入chapter4.example4_8包中的公共類importchapter4.example4_8.*;包之間在存儲(chǔ)結(jié)構(gòu)上存在層次關(guān)系,但在使用方面是完全平等的。導(dǎo)入包案例分析在chapter4中創(chuàng)建包example4_8,在該包中創(chuàng)建公共類,導(dǎo)入chapter4包Book類,并創(chuàng)建對象調(diào)用Book類中的方法。3Java常用的包Java常用的包Java常用的包包說明java.langJava語言的核心類庫,包含了運(yùn)行Java程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等。每個(gè)Java程序運(yùn)行時(shí),系統(tǒng)默認(rèn)加載這個(gè)包java.util包含處理時(shí)間的Date類,處理變長數(shù)組的Vector類,實(shí)現(xiàn)棧的Stack類和實(shí)現(xiàn)哈希(散列)表的HashTable類等java.awt實(shí)現(xiàn)構(gòu)建圖形用戶界面(GUI)的類庫。例如,低級繪圖操作的Graphics類,圖形界面組件和布局管理類(如Checkbox類、Container類、LayoutManger接口等),以及用戶界面交互控制和事件響應(yīng)的Event類java.io實(shí)現(xiàn)Java程序與操作系統(tǒng)、用戶界面及其他Java程序進(jìn)行數(shù)據(jù)交換的類庫java.sql實(shí)現(xiàn)JDBC(Javadatabaseconnection)的類庫,動(dòng)態(tài)地安裝不同驅(qū)動(dòng)程序來訪問不同數(shù)據(jù)源java.applet實(shí)現(xiàn)運(yùn)行于Internet瀏覽器中的JavaApplet的工具類庫實(shí)現(xiàn)網(wǎng)絡(luò)功能的類庫,如實(shí)現(xiàn)套接字通信的Socket類、ServerSocket類;編寫用戶自己的Telnet、FTP、郵件服務(wù)等實(shí)現(xiàn)網(wǎng)上通信的類;用于訪問Internet上資源和進(jìn)行CGl調(diào)用的類,如URL等4課后習(xí)題課后習(xí)題創(chuàng)建一個(gè)包,叫“com.test.example“,并在該包下創(chuàng)建類”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類和LoanTest類。Loan類實(shí)現(xiàn)計(jì)算等額本息情況下的月均還款額和總還款額,LoanTest類實(shí)現(xiàn)輸入貸款年利率、貸款年限和貨款總額,然后創(chuàng)建Loan類的對象,最后調(diào)用Loan類中的方法計(jì)算月均還款額和總還款額并輸出。2課后習(xí)題課后習(xí)題定義一個(gè)店員類SalesClerk,包括一個(gè)推薦圖書的成員方法,實(shí)現(xiàn)顧客咨詢哪一類圖書,店員就推薦該類圖書的其中一本。例如,顧客咨詢“Java”,店員推薦《Java程序設(shè)計(jì)教程(第2版)》。感謝大家觀看Java程序設(shè)計(jì)教程(第2版)內(nèi)部類01什么是封裝02封裝的案例CONTENTS目錄03課后練習(xí)1什么是封裝什么是封裝封裝就是把客觀事物封裝成抽象的類,并規(guī)定類中的變量和方法只讓可信的類或?qū)ο蟛僮?。?)將客觀事物封裝成抽象的類,類中的變量和方法只能通過類名或?qū)ο竺印?”的方式來訪問。(2)將類的某些變量和方法隱藏在類內(nèi)部,不允許用戶直接訪問,或者留下少量的方法供外部訪問。2封裝的案例封裝的案例創(chuàng)建員工通信錄定義一個(gè)員工類Employee,包括4個(gè)私有成員變量name(姓名)、age(年齡)、phone(聯(lián)系電話)和address(家庭住址)。如果用戶編程時(shí)想要實(shí)現(xiàn)對這4個(gè)成員變量的賦值和取值,可在該類中定義公有方法對變量進(jìn)行賦值和取值,然后用戶可調(diào)用該公有方法實(shí)現(xiàn)其功能。3課后練習(xí)課后練習(xí)定義一個(gè)職位類Position,包括4個(gè)私有成員變量title(職位名稱)、salary(薪水)、requirement(職位要求)和address(地址)。如果用戶編程時(shí)想要實(shí)現(xiàn)對這4個(gè)成員變量的賦值和取值,可在該類中定義公有方法對變量進(jìn)行賦值和取值,然后用戶可調(diào)用該公有方法實(shí)現(xiàn)其功能。繼承01extends關(guān)鍵字02方法重寫CONTENTS目錄03super關(guān)鍵字04課后練習(xí)1extends關(guān)鍵字extends關(guān)鍵字語法格式[類修飾符]class<子類名>extends<父類名>{ …… //類實(shí)體}注意:Java僅支持單繼承,即一個(gè)類只能有一個(gè)父類。同時(shí),類的繼承不改變類成員的訪問權(quán)限,也就是說,如果父類的成員是公有的、被保護(hù)的或默認(rèn)的,它的子類仍具有相應(yīng)的特性,且子類不能繼承父類的構(gòu)造方法。extends關(guān)鍵字案例定義自行車類Bicycle,包括成員變量wheel(車輪)和剎車方法brake()。然后定義ElectroBicycle(電動(dòng)自行車)類,繼承Bicycle類,并新增成員變量battery(電量)。2方法重寫方法重寫方法重寫方法重寫(override)又稱為方法覆蓋,它在子類中創(chuàng)建一個(gè)與父類具有相同名稱、相同返回值類型、相同參數(shù)列表的方法,只是方法體不同,以實(shí)現(xiàn)不同于父類的功能。當(dāng)父類中的方法無法滿足子類需求或子類具有特有功能的時(shí)候,需要重寫方法。方法的訪問控制權(quán)限只能從小的范圍修改到大的范圍(private<friendly<protected<public)。重寫方法一定不能拋出新的檢査異?;蛘弑缺恢貙懛椒暶鞲訉挿旱漠惓!@?,父類的一個(gè)方法聲明了一個(gè)檢査異常IOException,在重寫這個(gè)方法時(shí)不能拋出Exception,因?yàn)镋xception是IOException的父類,只能拋出IOException的子類異常。不能重寫構(gòu)造方法。子類和父類在同一個(gè)包中時(shí),子類可以重寫父類的所有成員方法,除了聲明為static、private和final的方法;子類和父類不在同一個(gè)包中時(shí),子類只能重寫父類的聲明為public和protected的非final方法。注意:方法重寫案例定義一個(gè)學(xué)生類Student,包括成員變量name(姓名)和類別方法category(),然后定義兩個(gè)Student的子類Undergraduate和Graduate,在子類中重寫category()方法,輸出不同的學(xué)生類別,最后定義測試類StudentTest,在main()方法中創(chuàng)建對象后,調(diào)用category()方法。3super關(guān)鍵字super關(guān)鍵字super關(guān)鍵字是一個(gè)引用變量,用于引用直接父類對象。用法:(1)調(diào)用直接父類的構(gòu)造方法。由于子類不能繼承父類的構(gòu)造方法,因此,要調(diào)用父類的構(gòu)造方法時(shí),必須在子類構(gòu)造方法體的第一行使用super關(guān)鍵字。該方法會(huì)調(diào)用父類相應(yīng)的構(gòu)造方法來完成子類對象的初始化工作。

例如: super(); //調(diào)用直接父類的無參構(gòu)造方法 super(param); //調(diào)用直接父類的有參構(gòu)造方法,可有多個(gè)參數(shù)

//實(shí)參列表必須與父類構(gòu)造方法對應(yīng)(2)調(diào)用直接父類的成員方法和成員變量。子類重寫了父類的方法后,可以通過“super.方法名”調(diào)用父類原有的成員方法。如果子類定義了和父類同名的成員變量,此時(shí)父類的成員變量被隱藏,可以通過“super.變量名”調(diào)用父類原有的成員變量。4課后習(xí)題課后習(xí)題創(chuàng)建和顯示學(xué)生信息,要求如下。①定義Person類,在該類中定義成員變量name(姓名)、sex(性別)和age(年齡),然后定義有參構(gòu)造方法,初始化成員變量,最后定義成員方法toString()返回姓名、性別和年齡信息。②定義Student類繼承Person類,在該類中增加成員變量no(學(xué)號(hào))、scoreEn(英語成績)、scoreMath(數(shù)學(xué)成績)和scoreCh(語文成績),然后增加成員方法aver()、max()和min()分別返回三門功課的平均分、最高分和最低分,最后重寫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ù)列表的不同來區(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è)必要條件:繼承、重寫和向上轉(zhuǎn)型。只有滿足這3個(gè)條件,才能在同一個(gè)繼承結(jié)構(gòu)中使用統(tǒng)一的邏輯處理不同的對象,從而執(zhí)行不同的行為。(1)繼承:必須存在有繼承關(guān)系的子類和父類。(2)重寫:子類對父類中某些方法進(jìn)行重新定義。(3)向上轉(zhuǎn)型:將子類的對象賦給父類對象,只有這樣該對象才既能調(diào)用父類的方法,又能調(diào)用子類的方法。運(yùn)行時(shí)多態(tài)案例定義動(dòng)物類Animal,包括成員變量species(種類)、吃方法eat()和奔跑方法run();然后定義兩個(gè)子類Cat和Dog,都繼承Animal類,并重寫eat()方法;最后定義測試類AnimalTest,在main()方法中分別基于不同子類Cat和Dog實(shí)例化Animal類的對象。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(); }}抽象類與抽象方法01抽象類02抽象方法CONTENTS目錄03課后練習(xí)1抽象類抽象類什么是抽象類抽象類即為類的抽象,是對相似類的歸納與總結(jié)

語法格式:

publicabstractclass類名{ //聲明抽象類 …… }注意:抽象類是不能實(shí)例化的,也就是說,不能基于抽象類來創(chuàng)建對象。2抽象方法抽象方法什么是抽象方法只包含方法聲明,而不包含方法體,它的具體實(shí)現(xiàn)由其派生出的各子類來完成,這使得程序的功能描述和功能實(shí)現(xiàn)得以分離。注意:抽象類也可以包含普通成員變量和成員方法。但是,抽象方法只能出現(xiàn)在抽象類中。在子類中,必須重寫父類中所有的抽象方法。

語法格式:

publicabstract返回值類型方法名(); //聲明抽象方法,必須加分號(hào)抽象方法案例定義抽象的平面圖形類PlaneGraphics,然后定義長方形子類Rectangle和橢圓形子類Eclipse,分別覆蓋抽象類中的抽象方法,使程序能夠用一種方法計(jì)算不同類型圖形的面積。3課后練習(xí)課后練習(xí)下面關(guān)于抽象類和抽象方法說法正確的是()。A.抽象類中至少有一個(gè)抽象方法B.抽象類中只能定義抽象方法C.利用抽象類也可以創(chuàng)建對象D.抽象方法只包含方法聲明,不包含

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論