面向?qū)ο?教案(第10講)靜態(tài)變量與靜態(tài)方法_第1頁
面向?qū)ο?教案(第10講)靜態(tài)變量與靜態(tài)方法_第2頁
面向?qū)ο?教案(第10講)靜態(tài)變量與靜態(tài)方法_第3頁
面向?qū)ο?教案(第10講)靜態(tài)變量與靜態(tài)方法_第4頁
面向?qū)ο?教案(第10講)靜態(tài)變量與靜態(tài)方法_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

《面向?qū)ο蟪绦蛟O(shè)計(jì)》教案第10講教學(xué)對象計(jì)算機(jī)科學(xué)技術(shù)專業(yè)授課內(nèi)容4.7靜態(tài)變量與靜態(tài)方法4.8遞歸4.9案例學(xué)習(xí)課程標(biāo)準(zhǔn)教學(xué)目標(biāo)(一)知識(shí)目標(biāo)1.重點(diǎn)掌握靜態(tài)成員的定義和使用2.掌握方法的遞歸調(diào)用(二)能力目標(biāo)1.能夠應(yīng)用類、對象、封裝、繼承、多態(tài)等知識(shí)編寫應(yīng)用程序。2.能夠掌握面向?qū)ο罄碚撆c方法,進(jìn)行創(chuàng)新性的編程設(shè)計(jì)教學(xué)方法課前預(yù)習(xí)、課堂講授、課堂和課后練習(xí)。學(xué)時(shí)及分配(第1學(xué)時(shí)50分鐘)課堂講授30分鐘課堂練習(xí)20分鐘4.7.1靜態(tài)變量4.7.2靜態(tài)方法4.8遞歸學(xué)時(shí)及分配(第2學(xué)時(shí)50分鐘)課堂講授30分鐘課堂練習(xí)20分鐘4.9案例學(xué)習(xí)課堂演練知識(shí)點(diǎn)分析重點(diǎn):靜態(tài)成員的定義和使用。方法的遞歸調(diào)用難點(diǎn):方法的遞歸調(diào)用教學(xué)過程設(shè)計(jì)內(nèi)容方式問題導(dǎo)入前面學(xué)習(xí)了實(shí)例變量和實(shí)例方法的定義和使用,這節(jié)來學(xué)習(xí)靜態(tài)變量和靜態(tài)方法的使用。另外還將學(xué)習(xí)方法的遞歸調(diào)用以及對象初始化等內(nèi)容。內(nèi)容要點(diǎn)4.7靜態(tài)變量和靜態(tài)方法如果成員變量用static修飾,則該變量稱為靜態(tài)變量或類變量(classvariable),否則稱為實(shí)例變量(instancevariable)。如果成員方法用static修飾,則該方法稱為靜態(tài)方法或類方法(classmethod),否則稱為實(shí)例方法(instancemethod)。4.7.1靜態(tài)變量實(shí)例變量和靜態(tài)變量的區(qū)別是:在創(chuàng)建類的對象時(shí),Java運(yùn)行時(shí)系統(tǒng)為每個(gè)對象的實(shí)例變量分配一塊內(nèi)存,然后通過該對象來訪問該實(shí)例變量。不同對象的實(shí)例變量占用不同的存儲(chǔ)空間,因此它們是不同的。而對于靜態(tài)變量,Java運(yùn)行時(shí)系統(tǒng)在類裝載時(shí)為這個(gè)類的每個(gè)靜態(tài)變量分配一塊內(nèi)存,以后再生成該類的對象時(shí),這些對象將共享同名的靜態(tài)變量,每個(gè)對象對靜態(tài)變量的改變都會(huì)影響到其他對象。【程序4-10】類的實(shí)例變量和靜態(tài)變量區(qū)別。Counter類定義了一個(gè)實(shí)例變量x和一個(gè)靜態(tài)變量y。Counter.javapackagecom.boda.xy;publicclassCounter{publicintx;//實(shí)例變量publicstaticinty=0;//靜態(tài)變量publicCounter(){x=100;}}對于靜態(tài)變量通常使用類名訪問,如下所示:Counter.y=100;Counter.y=200;System.out.println(Counter.y);//輸出200可以通過實(shí)例名訪問靜態(tài)變量,但這種方法可能產(chǎn)生混亂的代碼,不推薦通過實(shí)例訪問靜態(tài)變量。Countera=newCounter();Counterb=newCounter();a.y=100;b.y=200;System.out.println(a.y);//輸出結(jié)果為200上述語句執(zhí)行后的效果如圖4-14所示。a和b兩個(gè)對象共享一個(gè)y存儲(chǔ)空間。4.7.2靜態(tài)方法靜態(tài)方法和實(shí)例方法的區(qū)別是:靜態(tài)方法屬于類,它只能訪問靜態(tài)變量。實(shí)例方法可以對當(dāng)前的實(shí)例變量進(jìn)行操作,也可以對靜態(tài)變量進(jìn)行操作。靜態(tài)方法通常用類名調(diào)用,也可以用實(shí)例變量調(diào)用,實(shí)例方法必須由實(shí)例來調(diào)用。注意,在靜態(tài)方法中不能使用this和super關(guān)鍵字?!境绦?-11】類的靜態(tài)方法。靜態(tài)方法屬于類,可以訪問類的靜態(tài)成員,但不能方法實(shí)例成員。SomeClass.javapackagecom.boda.xy;publicclassSomeClass{intx=5;staticinty=48;//靜態(tài)方法的定義publicstaticvoiddisplay(){可以訪問靜態(tài)變量y=y+100;可以訪問靜態(tài)變量System.out.println("y="+y);編譯錯(cuò)誤,不能訪問實(shí)例成員x=x*5;編譯錯(cuò)誤,不能訪問實(shí)例成員System.out.println("x="+x);}}關(guān)于類的靜態(tài)成員和實(shí)例成員總結(jié)如下:實(shí)例方法可以調(diào)用實(shí)例方法和靜態(tài)方法,以及訪問實(shí)例變量和靜態(tài)變量。靜態(tài)方法可以調(diào)用靜態(tài)方法以及訪問靜態(tài)變量。靜態(tài)方法不能調(diào)用實(shí)例方法或訪問實(shí)例變量,因?yàn)殪o態(tài)方法和靜態(tài)變量不屬于某個(gè)特定對象。靜態(tài)成員和實(shí)例成員的關(guān)系如圖4-16所示。4.8方法遞歸調(diào)用遞歸(recursion)是解決復(fù)雜問題的一種常見方法。其基本思想就是把問題逐漸簡單化,最后實(shí)現(xiàn)問題的求解。例如,求正整數(shù)n的階乘n!,就可以通過遞歸實(shí)現(xiàn)。n!可按遞歸定義如下:0!=1;n!=n×(n-1)!;n>0Java語言支持方法的遞歸調(diào)用。所謂方法的遞歸調(diào)用就是方法自己調(diào)用自己。設(shè)計(jì)算n!的方法為factor(n),則該算法的簡單描述如下:if(n==0)return1;elsereturnfactor(n-1)*n;【程序4-12】用遞歸方法計(jì)算整數(shù)的階乘RecursionDemo.javapackagecom.boda.xy;publicclassRecursionDemo{publicstaticlongfactor(intn){計(jì)算n階乘的遞歸方法if(n==0)計(jì)算n階乘的遞歸方法 return1;else調(diào)用方法自己,但參數(shù)不同 returnn*factor(n-1);調(diào)用方法自己,但參數(shù)不同}publicstaticvoidmain(String[]args){intk=20;System.out.println(k+"!="+factor(k)); System.out.println("Long.MAX_VALUE="+Long.MAX_VALUE); //long型數(shù)的最大值} }4.9案例研究:打印斐波那契數(shù)列1.問題描述斐波那契數(shù)列(Fibonaccisequence),又稱黃金分割數(shù)列,是意大利數(shù)學(xué)家列昂納多·斐波那契(LeonardoFibonacci)提出,它指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、……,依次類推下去,后面的每個(gè)數(shù)是前面兩個(gè)數(shù)的和。在這個(gè)數(shù)列中的數(shù),就被稱為斐波那契數(shù)。斐波那契數(shù)列在很多領(lǐng)域都有應(yīng)用,自然界存在很多斐波那契數(shù),如樹的葉子數(shù)、向日葵的花瓣數(shù)等。研究發(fā)現(xiàn),斐波那契數(shù)還有很多有趣的現(xiàn)象,比如當(dāng)數(shù)較大時(shí),前一項(xiàng)與后一項(xiàng)的比值越來越逼近黃金分割比0.618。將楊輝三角形的數(shù)按左對齊排列(見案例5-4節(jié)結(jié)果),將斜行的數(shù)相加就可得到斐波那契數(shù)列。本案例要求使用方法遞歸,計(jì)算并輸出前20項(xiàng)斐波那契數(shù),并計(jì)算最后兩項(xiàng)的比值。2.設(shè)計(jì)思路在數(shù)學(xué)上,斐波那契數(shù)列可按如下以遞歸的方式定義:F(1)=1,F(xiàn)(2)=1,

F(n)=F(n-1)+F(n-2),(n

≥3,n

為自然數(shù))根據(jù)上述定義,我們可以編寫下面方法計(jì)算第n個(gè)斐波那契數(shù)。publicstaticlongfib(intn){ if(n==1||n==2){ return1; }else{這是方法遞歸調(diào)用 returnfib(n-1)

溫馨提示

  • 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

提交評論