Java講解方法總結計劃_第1頁
Java講解方法總結計劃_第2頁
Java講解方法總結計劃_第3頁
Java講解方法總結計劃_第4頁
Java講解方法總結計劃_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五講方法Java講解方法總結計劃本章要點對方法的理解方法的聲明方法的調用參數的傳遞方法的重載遞歸與迭代Java講解方法總結計劃方法概述通過前面章節(jié)的程序結構我們可以看到,對簡單的問題,程序比較簡單,一個程序是一個類,在類中包含一個main()方法。但解決一些比較復雜的問題時,按照現代模塊化程序設計的思想,應仔細分析問題,善于將這些復雜問題分解成若干個相對簡單的問題,即劃分成多個模塊。這樣,解決一個復雜問題就轉化為一些簡單的問題。Java講解方法總結計劃方法概述JAVA中有兩種模塊:方法和類。借助JavaAPI和其他各種類庫中可用的、“預先打好包”的方法和類,我們可以編寫出新的方法和類。在程序設計時,可以將一個程序中完成特定功能的程序定義成方法(有時在其他編程語言中稱為函數或過程)。在需要使用這些功能時,可調用相應的方法,特別是在某些功能多次被使用時,采用方法可大大地提高程序代碼的可重用性。Java講解方法總結計劃方法概述“方法”的目的:一是“分而治之”;二是軟件的重用;三是避免在程序中重復代碼。常用的Math類的方法和String類的方法Java講解方法總結計劃方法的聲明使用打印三個矩形的實例說明方法的聲明方法聲明的一般格式為:[修飾符1修飾符2….]返回值類型函數名(參數類型形式參數1,參數類型形式參數2,….){程序代碼

[return返回值]}補充:聲明方法時使用的參數稱為形式參數(形參),調用方法時使用的參數稱為實際參數(實參)。方法頭方法體Java講解方法總結計劃方法的聲明聲明方法應注意:在類體的“{}”外定義方法,是語法錯誤方法名可以是任何合法的標識符返回值類型可以是任何基本數據類型、String和void(表示方法不返回值),方法至多可以返回一個值,且返回值類型是不可省略的如果指定的返回值類型不是void,則方法中必須包含一條return語句,返回指定類型的值,同樣在返回值類型為void的方法中返回一個值也是一種語法錯誤Java講解方法總結計劃方法的聲明聲明方法應注意(接上頁)方法頭“()”中的形參用逗號分隔,且用add(inta,b)代替add(inta,intb)是一種錯誤方法頭“()”的右端不能放置“;”在方法體中將形式參數重新聲明是一種語法錯誤Java講解方法總結計劃方法的聲明方法按是否有參數可分為有參方法和無參方法:例定義計算平方的方法(有參方法)

staticintsquare(intx){ints;s=x*x;return(s);}Java講解方法總結計劃方法的聲明例求最大值的方法 intmax3(intx,inty,intz){intbig;if(x>y)big=x;elsebig=y;if(big<z)big=z;return(big);

}Java講解方法總結計劃方法的聲明例無參方法示例publicvoidmy_print(){System.out.println(“*”);System.out.println(“**”);System.out.println(“***”);System.out.println(“****”);}Java講解方法總結計劃方法的聲明按照是否有static修飾符,方法分為類方法(又稱靜態(tài)方法)和對象方法(又稱實例方法)例:類方法是有static修飾符的方法。publicstaticintmax_method(intx,inty){intmax;if(x>max)max=x;elsemax=y;returnmax;}Java講解方法總結計劃方法的聲明對象方法是沒有static修飾符修飾的方法,必須生成對象實例才能夠使用該方法。如:classCar{intspeed;//變量定義部分。

floatweight,height;//變量定義部分。

voidchangSpeed(intnewSpeed)//對象方法定義。

{speed=newSpeed;}floatgetWeight()//對象方法定義。

{returnweight;}floatgetHeight()//對象方法定義。

{returnheight;}}Java講解方法總結計劃方法的調用1、類方法調用類方法可以直接調用或通過類名.方法名([實參])調用,不需生成對象。對于有返回值的類方法作為表達式或表達式的一部分來調用,其在表達式中出現的形式為:方法名([實際參數表])Java講解方法總結計劃方法的調用例

調用類方法publicclassSquareC{staticintsquare(intx)//類方法

{ints;s=x*x;return(s);}publicstaticvoidmain(String[]args){intn=5;intresult;result=square(n);//類方法調用

System.out.println(result);}}Java講解方法總結計劃方法的調用對于沒有返回值的類方法,以獨立語句的方式調用方法。例:classAreaC{staticvoidarea(inta,intb){ints;s=a*b;System.out.println(s);}publicstaticvoidmain(String[]args){intx=5;inty=3;area(x,y);//方法語句,直接調用類方法

}}

Java講解方法總結計劃方法的調用例

無參類方法調用classSumC{staticvoidsum(){inti,j,s;i=3;j=6;s=i+j;System.out.println(s);}publicstaticvoidmain(String[]args){ sum();}}Java講解方法總結計劃方法的調用2、對象方法調用對于對象方法,必須先生成對象實例,然后用如下形式調用方法:對象名.方法名([實參])classMyObject{ staticintx=10; staticinty=20;

voidmethod(intk,intm) { intsum; sum=k+m; System.out.println("sum="+sum); }

publicstaticvoidmain(Stringargs[]) { MyObjectobj=newMyObject();//生成對象

obj.method(x,y);//調用對象方法

}}Java講解方法總結計劃方法的調用//對象方法(實例方法)調用示例:classCar{intspeed;//變量定義部分。

floatweight=12,height=2;//變量定義部分。

voidchangSpeed(intnewSpeed)//對象方法定義。

{speed=newSpeed;}floatgetWeight()//對象方法定義。

{returnweight;}floatgetHeight()//對象方法定義。

{returnheight;}publicstaticvoidmain(Stringargs[]){CarmyCar=newCar();myCar.changSpeed(120);System.out.println("車速度為:"+myCar.speed);System.out.println("車的重量為:"+myCar.getWeight());System.out.println("高度為:"+myCar.getHeight());}}Java講解方法總結計劃方法的調用//對象方法(實例方法)調用示例:注意x,y的值是否變化?文件名如何命名?classTom{voidf(intx,doubley){x=x+1;y=y+1;System.out.println("參數x和y的值分別是:”+x+”,”+y);}}publicclassExample{publicstaticvoidmain(Stringargs[]){intx=10;doubley=12.58;Tomtom=newTom();tom.f(x,y);System.out.println("main方法中x和y的值仍然分別是:“+x+”,”+y);}}Java講解方法總結計劃參數的傳遞參數傳遞要點:虛實結合“三一致”原則即實參與虛參個數、類型、順序一致。例4-5參數傳遞實例publicclassSwaping{staticvoidswap(intx,inty){inttemp;temp=x;x=y;y=temp;

}publicstaticvoidmain(String[]args){intu=23,v=100;System.out.println("BeforeCalling");System.out.println("u="+u+"v="+v);swap(u,v);System.out.println("AfterCalling");System.out.println("u="+u+"v="+v);}}Java講解方法總結計劃參數的傳遞classLader{doubleabove,bottom,height;publicvoidsetAbove(doublea){above=a;}publicvoidsetBottom(doubleb){bottom=b;}publicvoidsetHeight(doubleh){height=h;}doublecomputeArea(){return(above+bottom)*height/2.0;}}publicclassExample{publicstaticvoidmain(Stringargs[]){doublearea=0;LaderladerOne=newLader();laderOne.setAbove(10);laderOne.setBottom(40);laderOne.setHeight(2);area=laderOputeArea();System.out.println("laderOne的面積是:"+area);}}Java講解方法總結計劃方法的嵌套在解決較為復雜的問題時,用到方法調用的地方比較多。如果在一個方法的方法體中又調用了另外的方法,這就被稱為方法的嵌套調用,也稱方法的嵌套?!纠?-7】用方法的嵌套求立方體的體積程序分析:

main()方法中,調用vol()方法求立方體的體積,轉到vol()方法體中又調用了area()方法求面積。這種在調用一個方法vol()的方法體中又調用另外的一個方法area()的做法,就是方法的嵌套Java講解方法總結計劃方法的嵌套publicclassVolume{publicstaticvoidmain(Stringargs[]){inti=5,j=6,k=7,v;v=vol(i,j,k);System.out.println("立方體的體積為:"+v);}staticintvol(inta,intb,intc)//求體積的vol()方法

{return(a*area(b,c));}staticintarea(intx,inty)//求面積的area()方法

{return(x*y);}}Java講解方法總結計劃遞歸方法嵌套中更為特別的是,如果在被調用一個方法的方法體中又調用一個方法,而這個方法正是它自身,即:如果在一個方法的方法體中又調用它自身的方法嵌套稱為方法的遞歸。Java講解方法總結計劃遞歸例:采用遞歸算法求n!fac(n)=1n=1n*fac(n-1)Java講解方法總結計劃遞歸classFactorial{staticlongfac(intn){if(n==1)return1;elsereturnn*fac(n-1);}

publicstaticvoidmain(String[]args){intk;longf;k=25;f=fac(k);System.out.println(f);}Java講解方法總結計劃遞歸例:Fibonacci數列是這樣的一列數:

1,1,2,3,5,8,13,21,34,55,……

第n個Fibonacci數的遞歸描述為:publicclassFibo{publicstaticvoidmain(Stringargs[]){for(inti=1;i<=20;i++){System.out.print(f(i)+""); if(i%10==0)System.out.println();}}staticintf(intn){if(n==1||n==2)return1;elsereturn(f(n-2)+f(n-1));}}Java講解方法總結計劃遞歸 從程序設計的角度來說,遞歸調用必須解決兩個問題:一是遞歸計算的公式,二是遞歸結束的條件。每一個要使用遞歸的方法解決的問題,都要先考慮好這兩個方面。如本例說到的遞歸描述中就包含了這兩個條件,其中:遞歸計算公式:f(n)=f(n-2)+f(n-1)

遞歸結束條件:f(1)=1,f(2)=1Java講解方法總結計劃遞歸漢諾塔問題(P2046.37)問題是印度的一個古老的傳說。開天辟地的神勃拉瑪在一個廟里留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的一個在底下,其余一個比一個小,依次疊上去,廟里的眾僧不倦地把它們一個個地從

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論