




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蟪绦蛟O(shè)計(jì)主講人:劉小晶嘉興學(xué)院數(shù)理與信息工程學(xué)院liuxiaojing99999@163.com第1章Java概述
第2章基本數(shù)據(jù)類型和操作
第3章選擇第5章方法
第4章循環(huán)
基礎(chǔ)的計(jì)算機(jī)知識(shí)
第I部分必備第5章方法第6章數(shù)組
學(xué)習(xí)目標(biāo)掌握聲明和調(diào)用方法的語(yǔ)法理解方法參數(shù)的作用掌握如何傳遞方法參數(shù)掌握方法重載理解局部變量的作用域熟悉Math類掌握聲明和導(dǎo)入包什么是方法?方法(method)是為完成一個(gè)操作而組合在一起的語(yǔ)句組。一個(gè)類中可以有多個(gè)方法組成。例如:寫一代碼完成計(jì)算從整數(shù)num1到整數(shù)num2的整數(shù)和的操作。Publicstaticintsum(intnum1,intnum2)
{intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}定義(創(chuàng)建)方法(5.2)語(yǔ)法修飾符返回值類型方法名(參數(shù)列表){//方法體}方法頭方法體修飾符返回值類型方法名稱形式參數(shù)形參列表參數(shù)類型參數(shù)名稱返回值Publicstaticintsum(intnum1,intnum2)
{intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}方法簽名定義(創(chuàng)建)方法(5.2)方法可以返回一個(gè)值。有些方法只是執(zhí)行某些操作,不返回值,這時(shí)返回類型關(guān)鍵字為void。注意:在其他語(yǔ)言中,方法稱為過(guò)程(procedure)或函數(shù)(function)。帶返回值的方法稱為函數(shù),返回值類型為void的方法稱為過(guò)程。調(diào)用方法(5.3)創(chuàng)建方法只給出方法的定義。要執(zhí)行方法,必須調(diào)用(call/invoke)方法。如果方法有返回值,通常將方法調(diào)用作為一個(gè)值來(lái)處理。如:ints=sum(1,100);System.out.println(sum(1,100));如果方法沒有返回值,方法調(diào)用必須是一條語(yǔ)句。如:System.out.println(“WelcometoJava!”);當(dāng)調(diào)用方法時(shí),程序控制權(quán)轉(zhuǎn)移至被調(diào)用的方法。當(dāng)執(zhí)行return語(yǔ)句或到達(dá)方法結(jié)尾時(shí),程序控制權(quán)轉(zhuǎn)移至調(diào)用者。如:調(diào)用方法(5.3)
publicstaticvoidmain(String[]args){inti=1;intj=10;
ints=sum(i,j);……}publicstaticintsum(intnum1,intnum2){intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}Example:TestSum.java調(diào)用堆棧每當(dāng)調(diào)用一個(gè)方法時(shí),系統(tǒng)將參數(shù)、局部變量存儲(chǔ)在一個(gè)內(nèi)存區(qū)域中,這個(gè)內(nèi)存區(qū)域稱為調(diào)用堆棧(callstack)。當(dāng)方法結(jié)束返回到調(diào)用者時(shí),系統(tǒng)釋放相應(yīng)的堆棧內(nèi)存mains:j:10i:1調(diào)用main方法mains:j:10i:1調(diào)用max方法maxsum:51num2:10num1:1mains:51j:10i:1max方法結(jié)束main方法結(jié)束調(diào)用堆棧追蹤-舉例聲明i并初始化調(diào)用堆棧追蹤-舉例聲明i并初始化聲明k調(diào)用堆棧追蹤-舉例調(diào)用max方法調(diào)用堆棧追蹤-舉例調(diào)用堆棧追蹤-舉例實(shí)參iandj的值傳遞給形參num1andnum2聲明result調(diào)用堆棧追蹤-舉例(num1>num2)istrue調(diào)用堆棧追蹤-舉例num1賦給result調(diào)用堆棧追蹤-舉例返回result并賦給k調(diào)用堆棧追蹤-舉例執(zhí)行print語(yǔ)句調(diào)用堆棧追蹤-舉例傳遞參數(shù)(5.5)如果方法聲明中包含形參,調(diào)用方法時(shí)必須提供實(shí)參。實(shí)參的類型必須與形參的類型兼容。實(shí)參順序必須與形參的順序一致。當(dāng)調(diào)用方法時(shí),實(shí)參值的副本被傳遞給方法的形參。方法內(nèi)部對(duì)形參的修改不影響實(shí)參值。publicstaticvoidnPrintln(Stringmessage,intn){for(inti=0;i<n;i++)System.out.println(message);}調(diào)用方法:nPrintln(“Hello”,3);//正確調(diào)用方法:nPrintln(3,“Hello”);//錯(cuò)誤Example5-5:testPassByValue.java(書P129)注意在有返回值的方法中,return語(yǔ)句是必須的。下面的例子邏輯上是正確的,但在編譯時(shí)有錯(cuò)誤,Java編譯器認(rèn)為該方法可能不會(huì)返回任何值。
publicstaticintsign(intn){if(n>0)return1;elseif(n==0)return0;elseif(n<0)return–1;}要解決這個(gè)問(wèn)題,刪除if(n<0).方法的一個(gè)好處就是可以重復(fù)使用,如果是當(dāng)前類中的靜態(tài)方法,可以直接調(diào)用。其它類中的靜態(tài)方法需要通過(guò)“類名.方法名”調(diào)用。非靜態(tài)方法需要通過(guò)“類對(duì)象名.方法名”調(diào)用Example:testSign.java方法重載(5.8)提出問(wèn)題:前面用到的max方法只能用于int數(shù)據(jù)類型。如果要求兩個(gè)浮點(diǎn)數(shù)的最大值,該怎么辦?解決方法:創(chuàng)建另一個(gè)方法名相同但參數(shù)不同的方法。如:publicstaticdoublemax(doublenum1,doublenum2){
if(num1>num2)returnnum1;elsereturnnum2;}這就是“方法重載”方法重載(5.8)方法重載(overloading)是指方法名稱相同,但方法的參數(shù)不同的方法。一個(gè)類中可以包含多個(gè)重載的方法。當(dāng)調(diào)用方法時(shí),Java編譯器會(huì)根據(jù)實(shí)參的個(gè)數(shù)和類型尋找最精確匹配的方法進(jìn)行調(diào)用。調(diào)用可能匹配的方法多于一個(gè),則會(huì)產(chǎn)生編譯錯(cuò)誤,稱為歧義調(diào)用(ambiguousinvocation)。Example:AmbiguousOverloading.java(書/P135)Example5-9:TestMethodOverloading.java(書/P134)例:使用方法計(jì)算稅款美國(guó)的個(gè)人所得稅根據(jù)納稅人情況和須納稅收入進(jìn)行計(jì)算。編寫程序,用戶輸入納稅人情況和須納稅收入,計(jì)算出2002年的所得稅。2002年美國(guó)個(gè)人所得稅稅率表Example:ComputeTaxWithMethod.java局部變量的作用域(5.9)方法內(nèi)部聲明的變量稱為局部變量(localvariable)。變量的作用域(scope)指程序中可以引用該變量的范圍。局部變量的作用域從它的聲明開始,直到包含該變量的塊結(jié)束為止。局部變量在使用前必須先聲明和賦值。形參就是局部變量在方法中,可以在不同的非嵌套程序塊中以相同的名稱多次聲明局部變量。但不能在嵌套的程序塊中以相同的名稱多次聲明局部變量。在for語(yǔ)句的初始動(dòng)作部分聲明的變量,作用域是整個(gè)循環(huán)。在for語(yǔ)句循環(huán)體中聲明的變量,作用域從變量聲明開始到循環(huán)體結(jié)束。Example:TestLocalVariable.javaMath數(shù)學(xué)類(5.10)常量(double型)PI(π):3.14159265358979323846E(自然對(duì)數(shù)的底):2.7182818284590452354方法三角函數(shù)(書/P137)sin,cos,tan,asin,acos,atan,toRadians,toDigrees指數(shù)(書/P137)exp,log,log10,pow,sqrt取整(書/P138)ceil,floor,rint,round其它(書/P138)-下面都是重載方法min,max,abs,random例
生成隨機(jī)字符(5.11)編寫生成隨機(jī)字符的方法。分析:Java中每個(gè)字符對(duì)應(yīng)一個(gè)Unicode編碼從0000到FFFF。在生成一個(gè)隨機(jī)字符,就是產(chǎn)生一個(gè)從0到65535之間的隨機(jī)數(shù)。由于0<=Math.random()<1.0,所以隨機(jī)生成一個(gè)字條的計(jì)算表達(dá)式為:(int)(Math.random()*(65535+1))要生成兩個(gè)字符之間的隨機(jī)字符的表達(dá)式為:(char)(ch1
+Math.random()*(ch2–ch1+1))Example:RandomCharacter.java,
TestRandomCharacter.java方法抽象(5.12)方法的實(shí)現(xiàn)細(xì)節(jié)封閉在方法內(nèi),對(duì)使用該方法的用戶來(lái)說(shuō)是看不見可以將方法體看作一個(gè)黑匣子,其中包含了方法實(shí)現(xiàn)的細(xì)節(jié)。方法頭方法體輸入返回值對(duì)客戶可見對(duì)客戶不可見逐步求精(5.12)在設(shè)計(jì)較大的程序時(shí),可以采用“分而治之”的方法,將其分解為一些子問(wèn)題。子問(wèn)題再被分解為更小、更易處理的問(wèn)題。這種做法叫做逐步求精。自頂向下的設(shè)計(jì)自底向上的實(shí)現(xiàn)自頂向下的設(shè)計(jì)—舉例
顯示日歷編寫程序,顯示給定年和月份的日歷,運(yùn)行結(jié)果如下所示。書/P141—142自頂向下設(shè)計(jì)分析printCalenderreadInputprintMonthprintMonthTitleprintMonthBodyprintMonthNamegetStartDaygetTotalNumOfDaysgetNumOfDaysInMonthisLeapYear書/P142圖5-12自頂向下設(shè)計(jì)分析打印日歷讀取輸入打印日歷月份打印日歷月份的標(biāo)題打印日歷月份的主體確定月份名稱確定這個(gè)月的第一天是星期幾計(jì)算1800年1月1日和日歷月份的第一天之間相差的總天數(shù)計(jì)算該月的天數(shù)該年是否為閏年實(shí)現(xiàn):自頂向下自頂向下法是自上而下每次實(shí)現(xiàn)結(jié)構(gòu)圖中的一個(gè)方法。把未實(shí)現(xiàn)的方法用待完善方法代替。(見書/P143)實(shí)現(xiàn):自底向上自底向上方法是從下向上每次實(shí)現(xiàn)結(jié)構(gòu)圖中的一個(gè)方法。對(duì)每個(gè)實(shí)現(xiàn)了方法都寫一個(gè)測(cè)試程序進(jìn)行檢測(cè)。兩種方法結(jié)合有助于分離程序錯(cuò)誤,使調(diào)試變得簡(jiǎn)單。Example5-12:PrintCalendar.java(書/P144)包包(package)是相關(guān)類和接口的集合,它可以提供訪問(wèn)保護(hù)和名稱空間管理。組織功能:將相關(guān)的類和接口組織在一起,便于識(shí)別和管理防止命名沖突:不同包中的相同命名,不會(huì)產(chǎn)生沖突訪問(wèn)控制:控制包間的類型的可訪問(wèn)性語(yǔ)法packagepackagename;package語(yǔ)句必須位于源文件的第一條語(yǔ)句,源文件中定義的所有類和接口都屬于指定的包。如果沒有使用package語(yǔ)句,那么類和接口被放在缺省包(defaultpackage)中,缺省包是一個(gè)沒有名稱的包。包使用包的幾個(gè)理由:查找定位類。避免命名沖突。便于發(fā)布軟件。保護(hù)類。允許同一個(gè)包中的類訪問(wèn)類中被保護(hù)的成員,而外部類無(wú)權(quán)限。Optional包的命名(??)使用組織的internet域名的反序形式命名包。一個(gè)組織內(nèi)部發(fā)生的命名沖突需要由組織內(nèi)部的約定來(lái)處理,通常在組織名稱后面包含項(xiàng)目名稱。組織WorldWideWebConsortium
域名
包名org.w3c.domorg.w3c.dom.bootstraporg.w3c.dom.events組織TheApacheSoftwareFoundation域名
包名org.apache.tools.antorg.apache.tools.ant.helperorg.apache.catalinaorg.apache.catalina.core組織北京師范大學(xué)信息技術(shù)與軟件工程學(xué)院域名
包名com.bnuitse.putcom.bnuitse.put.modelcom.bnuitse.put.viewExample:com/prehall/mypackage/Format.java包的目錄Java要求包名與文件系統(tǒng)的目錄結(jié)構(gòu)一一對(duì)應(yīng)。對(duì)于名為com.prenhall.mypackage的包,需創(chuàng)建對(duì)應(yīng)的目錄。換句話說(shuō)一個(gè)包實(shí)際上是包含類的字節(jié)碼的目錄。com.prenhall.mypackage設(shè)置classpath環(huán)境變量
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)的自我評(píng)價(jià)與提升路徑及試題及答案
- 小自考試題及答案在2024年行政管理
- 九年級(jí)歷史下冊(cè) 第四單元 經(jīng)濟(jì)大危機(jī)和第二次世界大戰(zhàn) 第13課 羅斯福新政教學(xué)設(shè)計(jì)2 新人教版
- 公共事業(yè)管理專業(yè)小自考試題及答案
- 中醫(yī)護(hù)理操作耳穴埋豆
- 鐵路防機(jī)械傷害課件
- 小自考市場(chǎng)營(yíng)銷學(xué)術(shù)論文寫作技巧試題及答案
- 第1課 穿衣我做主(教案)-三年級(jí)上冊(cè)勞動(dòng)北京理工大學(xué)出版社
- 線描畫期末測(cè)試題及答案
- 視覺傳播設(shè)計(jì)與品牌識(shí)別關(guān)系試題及答案
- 武漢市2024-2025學(xué)年下學(xué)期第一次月考八年級(jí)數(shù)學(xué)試題(一)(含答案)
- 完整版高中古詩(shī)文必背72篇【原文+注音+翻譯】
- 人工智能領(lǐng)域博士攻讀計(jì)劃
- 西亞第1課時(shí) 課件-2024-2025學(xué)年七年級(jí)地理下學(xué)期(人教版2024)
- 主管護(hù)師200道考點(diǎn)押題和口訣(護(hù)考)
- (一模)哈三中2025屆高三第一次模擬考試 地理試題(含答案)
- 中考語(yǔ)文文學(xué)批注-成語(yǔ)辨析(含答案)
- 江西省江銅銅箔科技股份有限公司2025年度校園招聘【204人】筆試參考題庫(kù)附帶答案詳解
- 直播帶貨銷售合作協(xié)議書范本
- 《鄉(xiāng)村振興促進(jìn)法》參考試題庫(kù)80題(含答案)
- 中國(guó)近現(xiàn)代史綱要學(xué)習(xí)心得體會(huì)與文化自信
評(píng)論
0/150
提交評(píng)論