




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ù)類(lèi)型和操作
第3章選擇第5章方法
第4章循環(huán)
基礎(chǔ)的計(jì)算機(jī)知識(shí)
第I部分必備第5章方法第6章數(shù)組
學(xué)習(xí)目標(biāo)掌握聲明和調(diào)用方法的語(yǔ)法理解方法參數(shù)的作用掌握如何傳遞方法參數(shù)掌握方法重載理解局部變量的作用域熟悉Math類(lèi)掌握聲明和導(dǎo)入包什么是方法?方法(method)是為完成一個(gè)操作而組合在一起的語(yǔ)句組。一個(gè)類(lèi)中可以有多個(gè)方法組成。例如:寫(xiě)一代碼完成計(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ǔ)法修飾符返回值類(lèi)型方法名(參數(shù)列表){//方法體}方法頭方法體修飾符返回值類(lèi)型方法名稱(chēng)形式參數(shù)形參列表參數(shù)類(lèi)型參數(shù)名稱(chēng)返回值Publicstaticintsum(intnum1,intnum2)
{intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}方法簽名定義(創(chuàng)建)方法(5.2)方法可以返回一個(gè)值。有些方法只是執(zhí)行某些操作,不返回值,這時(shí)返回類(lèi)型關(guān)鍵字為void。注意:在其他語(yǔ)言中,方法稱(chēng)為過(guò)程(procedure)或函數(shù)(function)。帶返回值的方法稱(chēng)為函數(shù),返回值類(lèi)型為void的方法稱(chēng)為過(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));如果方法沒(méi)有返回值,方法調(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ū)域稱(chēng)為調(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í)參的類(lèi)型必須與形參的類(lèi)型兼容。實(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(書(shū)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)前類(lèi)中的靜態(tài)方法,可以直接調(diào)用。其它類(lèi)中的靜態(tài)方法需要通過(guò)“類(lèi)名.方法名”調(diào)用。非靜態(tài)方法需要通過(guò)“類(lèi)對(duì)象名.方法名”調(diào)用Example:testSign.java方法重載(5.8)提出問(wèn)題:前面用到的max方法只能用于int數(shù)據(jù)類(lèi)型。如果要求兩個(gè)浮點(diǎn)數(shù)的最大值,該怎么辦?解決方法:創(chuàng)建另一個(gè)方法名相同但參數(shù)不同的方法。如:publicstaticdoublemax(doublenum1,doublenum2){
if(num1>num2)returnnum1;elsereturnnum2;}這就是“方法重載”方法重載(5.8)方法重載(overloading)是指方法名稱(chēng)相同,但方法的參數(shù)不同的方法。一個(gè)類(lèi)中可以包含多個(gè)重載的方法。當(dāng)調(diào)用方法時(shí),Java編譯器會(huì)根據(jù)實(shí)參的個(gè)數(shù)和類(lèi)型尋找最精確匹配的方法進(jìn)行調(diào)用。調(diào)用可能匹配的方法多于一個(gè),則會(huì)產(chǎn)生編譯錯(cuò)誤,稱(chēng)為歧義調(diào)用(ambiguousinvocation)。Example:AmbiguousOverloading.java(書(shū)/P135)Example5-9:TestMethodOverloading.java(書(shū)/P134)例:使用方法計(jì)算稅款美國(guó)的個(gè)人所得稅根據(jù)納稅人情況和須納稅收入進(jìn)行計(jì)算。編寫(xiě)程序,用戶(hù)輸入納稅人情況和須納稅收入,計(jì)算出2002年的所得稅。2002年美國(guó)個(gè)人所得稅稅率表Example:ComputeTaxWithMethod.java局部變量的作用域(5.9)方法內(nèi)部聲明的變量稱(chēng)為局部變量(localvariable)。變量的作用域(scope)指程序中可以引用該變量的范圍。局部變量的作用域從它的聲明開(kāi)始,直到包含該變量的塊結(jié)束為止。局部變量在使用前必須先聲明和賦值。形參就是局部變量在方法中,可以在不同的非嵌套程序塊中以相同的名稱(chēng)多次聲明局部變量。但不能在嵌套的程序塊中以相同的名稱(chēng)多次聲明局部變量。在for語(yǔ)句的初始動(dòng)作部分聲明的變量,作用域是整個(gè)循環(huán)。在for語(yǔ)句循環(huán)體中聲明的變量,作用域從變量聲明開(kāi)始到循環(huán)體結(jié)束。Example:TestLocalVariable.javaMath數(shù)學(xué)類(lèi)(5.10)常量(double型)PI(π):3.14159265358979323846E(自然對(duì)數(shù)的底):2.7182818284590452354方法三角函數(shù)(書(shū)/P137)sin,cos,tan,asin,acos,atan,toRadians,toDigrees指數(shù)(書(shū)/P137)exp,log,log10,pow,sqrt取整(書(shū)/P138)ceil,floor,rint,round其它(書(shū)/P138)-下面都是重載方法min,max,abs,random例
生成隨機(jī)字符(5.11)編寫(xiě)生成隨機(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ì)使用該方法的用戶(hù)來(lái)說(shuō)是看不見(jiàn)可以將方法體看作一個(gè)黑匣子,其中包含了方法實(shí)現(xiàn)的細(xì)節(jié)。方法頭方法體輸入返回值對(duì)客戶(hù)可見(jiàn)對(duì)客戶(hù)不可見(jiàn)逐步求精(5.12)在設(shè)計(jì)較大的程序時(shí),可以采用“分而治之”的方法,將其分解為一些子問(wèn)題。子問(wèn)題再被分解為更小、更易處理的問(wèn)題。這種做法叫做逐步求精。自頂向下的設(shè)計(jì)自底向上的實(shí)現(xiàn)自頂向下的設(shè)計(jì)—舉例
顯示日歷編寫(xiě)程序,顯示給定年和月份的日歷,運(yùn)行結(jié)果如下所示。書(shū)/P141—142自頂向下設(shè)計(jì)分析printCalenderreadInputprintMonthprintMonthTitleprintMonthBodyprintMonthNamegetStartDaygetTotalNumOfDaysgetNumOfDaysInMonthisLeapYear書(shū)/P142圖5-12自頂向下設(shè)計(jì)分析打印日歷讀取輸入打印日歷月份打印日歷月份的標(biāo)題打印日歷月份的主體確定月份名稱(chēng)確定這個(gè)月的第一天是星期幾計(jì)算1800年1月1日和日歷月份的第一天之間相差的總天數(shù)計(jì)算該月的天數(shù)該年是否為閏年實(shí)現(xiàn):自頂向下自頂向下法是自上而下每次實(shí)現(xiàn)結(jié)構(gòu)圖中的一個(gè)方法。把未實(shí)現(xiàn)的方法用待完善方法代替。(見(jiàn)書(shū)/P143)實(shí)現(xiàn):自底向上自底向上方法是從下向上每次實(shí)現(xiàn)結(jié)構(gòu)圖中的一個(gè)方法。對(duì)每個(gè)實(shí)現(xiàn)了方法都寫(xiě)一個(gè)測(cè)試程序進(jìn)行檢測(cè)。兩種方法結(jié)合有助于分離程序錯(cuò)誤,使調(diào)試變得簡(jiǎn)單。Example5-12:PrintCalendar.java(書(shū)/P144)包包(package)是相關(guān)類(lèi)和接口的集合,它可以提供訪(fǎng)問(wèn)保護(hù)和名稱(chēng)空間管理。組織功能:將相關(guān)的類(lèi)和接口組織在一起,便于識(shí)別和管理防止命名沖突:不同包中的相同命名,不會(huì)產(chǎn)生沖突訪(fǎng)問(wèn)控制:控制包間的類(lèi)型的可訪(fǎng)問(wèn)性語(yǔ)法packagepackagename;package語(yǔ)句必須位于源文件的第一條語(yǔ)句,源文件中定義的所有類(lèi)和接口都屬于指定的包。如果沒(méi)有使用package語(yǔ)句,那么類(lèi)和接口被放在缺省包(defaultpackage)中,缺省包是一個(gè)沒(méi)有名稱(chēng)的包。包使用包的幾個(gè)理由:查找定位類(lèi)。避免命名沖突。便于發(fā)布軟件。保護(hù)類(lèi)。允許同一個(gè)包中的類(lèi)訪(fǎng)問(wèn)類(lèi)中被保護(hù)的成員,而外部類(lèi)無(wú)權(quán)限。Optional包的命名(??)使用組織的internet域名的反序形式命名包。一個(gè)組織內(nèi)部發(fā)生的命名沖突需要由組織內(nèi)部的約定來(lái)處理,通常在組織名稱(chēng)后面包含項(xiàng)目名稱(chē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)的目錄。換句話(huà)說(shuō)一個(gè)包實(shí)際上是包含類(lèi)的字節(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)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年教育領(lǐng)域?qū)ξ⑸锏囊笤囶}及答案
- 項(xiàng)目管理中的外部合作與網(wǎng)絡(luò)關(guān)系試題及答案
- 證券從業(yè)資格證考試專(zhuān)業(yè)見(jiàn)解試題及答案
- 項(xiàng)目團(tuán)隊(duì)協(xié)作中的有效機(jī)制試題及答案
- 2024年行政管理師考試考前沖刺試題及答案
- 2024年項(xiàng)目管理專(zhuān)業(yè)能力提升試題及答案
- 2025年審計(jì)法規(guī)遵循試題及答案
- 綠化種植施肥方案范本
- 風(fēng)險(xiǎn)與收益的平衡在2025年證券考試中的重要性試題及答案
- 玻璃生產(chǎn)與應(yīng)用技術(shù)考核試卷
- JJF 2221-2025導(dǎo)熱系數(shù)瞬態(tài)測(cè)定儀校準(zhǔn)規(guī)范
- 華為手機(jī)協(xié)議合同
- 公司兩班倒管理制度
- 汽車(chē)漆面保護(hù)膜安裝協(xié)議
- 直腸癌護(hù)理新進(jìn)展
- 2024北京八中高一(下)期中英語(yǔ)試題及答案
- 2024-2025學(xué)年接力版小學(xué)英語(yǔ)五年級(jí)下冊(cè)(全冊(cè))知識(shí)點(diǎn)歸納
- 淺談南京市區(qū)地形地貌和工程地質(zhì)層構(gòu)成
- 【模型與方法】2025屆高考物理二輪復(fù)習(xí)熱點(diǎn)題型歸類(lèi)計(jì)算4 電磁感應(yīng)綜合計(jì)算問(wèn)題(原卷版)
- 功率因數(shù)及功率因數(shù)的提高電工基礎(chǔ)課件
- 教育機(jī)構(gòu)季度工作總結(jié)
評(píng)論
0/150
提交評(píng)論