




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第5章方法2開放問題分別求出1
到10、20
到30、35到45的整數(shù)和。3問題intsum=0;for(inti=1;i<=10;i++)sum+=i;System.out.println("Sumfrom1to10is"+sum);sum=0;for(inti=20;i<=30;i++)sum+=i;System.out.println("Sumfrom20to30is"+sum);sum=0;for(inti=35;i<=45;i++)sum+=i;System.out.println("Sumfrom35to45is"+sum);4問題intsum=0;for(inti=1;i<=10;i++)sum+=i;System.out.println("Sumfrom1to10is"+sum);sum=0;for(inti=20;i<=30;i++)sum+=i;System.out.println("Sumfrom20to30is"+sum);sum=0;for(inti=35;i<=45;i++)sum+=i;System.out.println("Sumfrom35to45is"+sum);5解決方案publicstaticintsum(inti1,inti2){intsum=0;for(inti=i1;i<=i2;i++)sum+=i;returnsum;}publicstaticvoidmain(String[]args){System.out.println("Sumfrom1to10is"+sum(1,10));System.out.println("Sumfrom20to30is"+sum(20,30));System.out.println("Sumfrom35to45is"+sum(35,45));}6學(xué)習(xí)目標定義方法、調(diào)用方法以及傳參數(shù)給方法(第5.2-5.5節(jié))。開發(fā)模塊化的、易讀、易調(diào)試以及易維護的可重用代碼(第5.6節(jié))。使用方法重載和理解歧義重載(第5.7節(jié))。設(shè)計和實現(xiàn)重載方法(第5.8節(jié))。確定變量的作用域(第5.9節(jié))。了解如何使用Math
類中的方法(第5.10-5.11節(jié))。學(xué)習(xí)方法抽象的概念(第5.12節(jié))。使用逐步求精的方法設(shè)計和實現(xiàn)方法(第5.12節(jié))。7定義方法方法是為完成一個操作而組合在一起的語句。8方法簽名方法簽名包括方法名和參數(shù)列表。9形式參數(shù)定義在方法頭的變量被稱作形式參數(shù)。10實際參數(shù)當方法被調(diào)用時,就傳遞給參數(shù)一個值。這個值被稱作實際參數(shù)或?qū)崊ⅰ?1返回數(shù)據(jù)類型方法可以返回一個值。returnValueType是方法返回值的數(shù)據(jù)類型。如果方法不返回值,那么returnValueType就是關(guān)鍵字void。例如:在main
方法中returnValueType就是void。12調(diào)用方法測試max方法這個方法演示調(diào)用一個方法max返回一個最大int值的過程。TestMax13調(diào)用方法(續(xù))動畫14跟蹤方法調(diào)用現(xiàn)在i是5動畫15跟蹤方法調(diào)用現(xiàn)在j是2動畫16跟蹤方法調(diào)用調(diào)用max(i,j)動畫17跟蹤方法調(diào)用調(diào)用max(i,j)將i的值傳遞給num1將j的值傳遞給num2動畫18跟蹤方法調(diào)用聲明變量result動畫19跟蹤方法調(diào)用因為num1是5而num2是2所以(num1>num2)為真動畫20跟蹤方法調(diào)用現(xiàn)在result是5動畫21跟蹤方法調(diào)用返回result,它的值為5動畫22跟蹤方法調(diào)用返回max(i,j)并將返回值賦給k動畫23跟蹤方法調(diào)用執(zhí)行打印語句動畫24注意對有返回值的方法而言,return語句是必需的。下圖(a)中顯示的方法在邏輯上是正確的,但它會有編譯錯誤,因為Java認為該方法可能不會返回任何值。為解決這個問題,需要刪除(a)中的if(n<0),這樣,不管if
語句怎么執(zhí)行,編譯器總可以到達return語句。25在其它類中重用方法注意:方法的一個好處就是重用。
max
方法除了可以從TestMax中調(diào)用,還可以被其它類調(diào)用。如果你創(chuàng)建了一個新類Test,就可以通過使用“類名.方法名”(例如:TestMax.max)調(diào)用max
方法。
26調(diào)用堆棧27跟蹤調(diào)用堆棧聲明i并初始化i動畫28跟蹤調(diào)用堆棧聲明j并初始化j動畫29跟蹤調(diào)用堆棧聲明k動畫30跟蹤調(diào)用堆棧調(diào)用max(i,j)動畫31跟蹤調(diào)用堆棧將i和j的值傳遞給
num1和num2動畫32跟蹤調(diào)用堆棧將i和j的值傳遞給num1和num2動畫33跟蹤調(diào)用堆棧(num1>num2)為真動畫34跟蹤調(diào)用堆棧將num1的值賦給result動畫35跟蹤調(diào)用堆棧返回result的值并將它賦給k動畫36跟蹤調(diào)用堆棧執(zhí)行打印語句動畫37void方法舉例這種類型的方法不返回值。這種方法會執(zhí)行一些動作。TestVoidMethod38傳遞參數(shù)publicstaticvoidnPrintln(Stringmessage,intn){for(inti=0;i<n;i++)System.out.println(message);}假設(shè)你使用nPrintln(“WelcometoJava”,5);調(diào)用了一個方法,輸出是什么?假設(shè)你使用nPrintln(“ComputerScience”,15);調(diào)用了一個方法,輸出是什么?39通過值傳遞這個程序演示傳值給方法。Increment40通過值傳遞測試通過值傳遞這個程序演示如何傳值給方法TestPassByValue41通過值傳遞(續(xù))42模塊化代碼使用方法可以減少冗余的代碼并且提高代碼的重用性。方法也可以用來模塊化代碼同時提高程序質(zhì)量。GreatestCommonDivisorMethodPrimeNumberMethod43重載方法重載max方法publicstaticdoublemax(doublenum1,doublenum2){if(num1>num2)returnnum1;elsereturnnum2;}TestMethodOverloading44歧義調(diào)用有時可能會有兩個或兩個以上和方法調(diào)用相匹配,但是編譯器無法判斷哪個是最精確的匹配。這個問題被稱為歧義調(diào)用(ambiguousinvocation)。
歧義調(diào)用是一個編譯錯誤。45歧義調(diào)用publicclassAmbiguousOverloading{publicstaticvoidmain(String[]args){System.out.println(max(1,2));}
publicstaticdoublemax(intnum1,doublenum2){if(num1>num2)returnnum1;elsereturnnum2;}
publicstaticdoublemax(doublenum1,intnum2){if(num1>num2)returnnum1;elsereturnnum2;}}46問題:將十進制數(shù)轉(zhuǎn)換成十六進制數(shù)編寫一個將十進制整數(shù)轉(zhuǎn)換成十六進制整數(shù)的程序。Decimal2HexConversion47變量的作用域局部變量:在方法里定義的變量域:程序中包含某變量的塊局部變量的作用域從聲明該變量的地方開始,直到包含該變量的塊結(jié)束為止。
局部變量都必須在使用之前進行聲明。48變量的作用域(續(xù))你可以在一個方法的不同塊里聲明相同的變量多次,
但是不能在嵌套塊或同一塊中兩次聲明同一變量。49局部變量的作用域(續(xù))在
for
循環(huán)頭中初始動作部分聲明的變量,其作用域是整個for循環(huán)。但是在
for
體內(nèi)聲明的變量,其作用域只限于循環(huán)體內(nèi),是從聲明它的地方開始,到包含該變量的塊結(jié)束為止。50局部變量的作用域(續(xù))51局部變量的作用域(續(xù))//FinewithnoerrorspublicstaticvoidcorrectMethod(){intx=1;inty=1;//iisdeclaredfor(inti=1;i<10;i++){x+=i;}//iisdeclaredagainfor(inti=1;i<10;i++){y+=i;}}52局部變量的作用域(續(xù))//WithnoerrorspublicstaticvoidincorrectMethod(){intx=1;inty=1;for(inti=1;i<10;i++){intx=0;x+=i;}}53方法抽象你可以把方法體想象成一個裝有方法執(zhí)行細節(jié)的黑箱。54方法的優(yōu)點一旦寫出一個方法就可以在任何地方重用它。信息隱藏:方法的實現(xiàn)細節(jié)封裝在方法內(nèi),對使用該方法的用戶來說是隱藏的。減少復(fù)雜度。55
Math類類常量PIE類方法三角函數(shù)方法指數(shù)函數(shù)方法取整方法min、max、abs和random方法56三角函數(shù)方法sin(doublea)cos(doublea)tan(doublea)acos(doublea)asin(doublea)atan(doublea)弧度toRadians(90)舉例:Math.sin(0)返回0.0Math.sin(Math.PI/6)返回0.5Math.sin(Math.PI/2)返回1.0Math.cos(0)返回1.0Math.cos(Math.PI/6)返回0.866Math.cos(Math.PI/2)返回057指數(shù)函數(shù)方法exp(doublea)返回e
的a次方。log(doublea)返回a的自然對數(shù)。log10(doublea)返回以10為底的a的對數(shù)。pow(doublea,doubleb)返回a的b次方。sqrt(doublea)返回a的平方根。舉例:Math.exp(1)返回2.71Math.log(2.71)返回1.0Math.pow(2,3)返回8.0Math.pow(3,2)返回9.0Math.pow(3.5,2.5)返回22.91765Math.sqrt(4)返回2.0Math.sqrt(10.5)返回3.2458取整方法doubleceil(doublex)x取向下離它最接近的整數(shù)
,這個整數(shù)將以一個
double類型的值返回。doublefloor(doublex)x取向下離它最接近的整數(shù),
這個整數(shù)將以一個double類型的值返回。doublerint(doublex)x取離它最接近的整數(shù)。如果
x距離兩個整數(shù)同樣接近,就返回成偶數(shù)的double類型值。intround(floatx)
返回(int)Math.floor(x+0.5)。longround(doublex)返回(long)Math.floor(x+0.5)。
59取整方法舉例Math.ceil(2.1)返回3.0Math.ceil(2.0)返回2.0Math.ceil(-2.0)返回–2.0Math.ceil(-2.1)返回-2.0Math.floor(2.1)返回2.0Math.floor(2.0)返回2.0Math.floor(-2.0)返回–2.0Math.floor(-2.1)返回-3.0Math.rint(2.1)返回2.0Math.rint(2.0)返回2.0Math.rint(-2.0)返回–2.0Math.rint(-2.1)返回-2.0Math.rint(2.5)返回2.0Math.rint(-2.5)返回-2.0Math.round(2.6f)返回3Math.round(2.0)返回2Math.round(-2.0f)返回-2Math.round(-2.6)返回-3
60min、max和absmax(a,b)和min(a,b)返回兩個參數(shù)的最大和最小值。abs(a)返回參數(shù)的絕對值。random()返回大于等于0.0且小于1.0的double
型隨機數(shù)。舉例:Math.max(2,3)返回3Math.max(2.5,3)返回3.0Math.min(2.5,3.6)返回2.5Math.abs(-2)返回2Math.abs(-2.1)返回2.161
random
方法生成大于等于0.0且小于1.0的
double
型隨機數(shù)(0<=Math.random()<1.0)舉例:通常,62實例學(xué)習(xí):生成隨機字符計算機處理的是數(shù)值數(shù)據(jù)和字符。你已經(jīng)看到許多涉及數(shù)值數(shù)據(jù)的例子。了解字符和如何處理字符也同樣重要。正如第2.9節(jié)介紹的那樣,每個字符都有唯一的一個從0到FFFF(即十進制的65535)的十六進制數(shù)
。要生成一個隨機字符就是使用下面的表達式生成0到
65535之間的隨機數(shù):(注意:因為
0<=Math.random()<1.0所以必須給
65535加1):(int)(Math.random()*(65535+1))63實例學(xué)習(xí):生成隨機字符(續(xù))現(xiàn)在讓我們考慮如何生成一個隨機小寫字母。
小寫字母的統(tǒng)一碼是一串連續(xù)的整數(shù),從小寫字母‘a(chǎn)’的統(tǒng)一碼開始,然后是‘b’、‘c’、...、‘z’?!產(chǎn)’的統(tǒng)一碼是(int)'a'所以,從(int)'a'到
(int)'z'的隨機整數(shù)是(int)((int)'a'+Math.random()*((int)'z'-(int)'a'+1)64實例學(xué)習(xí):生成隨機字符(續(xù))現(xiàn)在讓我們考慮如何生成一個隨機小寫字母。
小寫字母的統(tǒng)一碼是一串連續(xù)的整數(shù),從小寫字母‘a(chǎn)’的統(tǒng)一碼開始,然后是‘b’、‘c’、...、‘z’?!產(chǎn)’的統(tǒng)一碼是(int)'a'所以,從(int)'a'到
(int)'z'的隨機整數(shù)是(int)((int)'a'+Math.random()*((int)'z'-(int)'a'+1)65實例學(xué)習(xí):生成隨機字符(續(xù))正如第章中所討論的,所有的數(shù)值運算符都可以應(yīng)用到
char操作數(shù)上。如果另一個操作數(shù)是數(shù)字或字符,那么char型操作數(shù)就會被轉(zhuǎn)換成一個數(shù)字。這樣,前面的表達式就可以被簡化成如下所示:'a'+Math.random()*('z'-'a'+1)
這樣,隨機的小寫字母就是:(char)('a'+Math.random()*('z'-'a'+1))66實例學(xué)習(xí):生成隨機字符(續(xù))推廣前面的討論可以生成任意兩個在
ch1和
ch2之間的隨機字符,其中
ch1<ch2,如下所示:(char)(ch1+Math.random()*(ch2–ch1+1))
67RandomCharacter類//RandomCharacter.java:GeneraterandomcharacterspublicclassRandomCharacter{/**Generatearandomcharacterbetweench1andch2*/publicstaticchargetRandomCharacter(charch1,charch2){return(char)(ch1+Math.random()*(ch2-ch1+1));}
/**Generatearandomlowercaseletter*/publicstaticchargetRandomLowerCaseLetter(){returngetRandomCharacter('a','z');}
/**Generatearandomuppercaseletter*/publicstaticchargetRandomUpperCaseLetter(){returngetRandomCharacter('A','Z');}
/**Generatearandomdigitcharact
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 托兒所服務(wù)的危機管理和風(fēng)險控制考核試卷
- 光纜生產(chǎn)自動化與智能化技術(shù)考核試卷
- 樓房商用租賃合同范本
- 首付購車合同范本
- 軸承成品采購合同范本
- 水電承包勞務(wù)合同范本
- 酒店客房服務(wù)標準及流程制度
- 靜脈輸液的操作流程及操作規(guī)范
- 電商網(wǎng)站運營維護服務(wù)協(xié)議
- 共享經(jīng)濟平臺技術(shù)開發(fā)合作協(xié)議
- 大學(xué)生就業(yè)指導(dǎo)教學(xué)-大學(xué)生就業(yè)形勢與政策
- 車路協(xié)同路側(cè)設(shè)備通信終端(RSU)測試技術(shù)要求(征求意見稿)
- TCAICC 001-2024 張家界莓茶質(zhì)量等級評價
- 冷鏈鄉(xiāng)村物流相關(guān)行業(yè)公司成立方案及可行性研究報告
- 6.《變色龍》省公開課一等獎全國示范課微課金獎?wù)n件
- 股權(quán)架構(gòu)設(shè)計合同
- HJ1209-2021工業(yè)企業(yè)土壤和地下水自行監(jiān)測技術(shù)指南(試行)
- 《跨境電商英語》課程標準
- 2024年湖南電氣職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 幼兒園衛(wèi)生保健工作匯報
- 第一課 追求向上向善的道德(課時1)(課件)
評論
0/150
提交評論