java課程2011內容串講_第1頁
java課程2011內容串講_第2頁
java課程2011內容串講_第3頁
java課程2011內容串講_第4頁
java課程2011內容串講_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

java課程內容串講復習串講所學內容澄清某些模糊認識1Chapter01計算機系統概述熟悉java編譯的過程:源文件(文件名.java)目標文件(文件名.class)

通過JVM/解釋器

運行了解:運行java程序的基本過程(在Eclipse環(huán)境下)TypesofErrors:Syntax,Run-Time,Logicerror.能否舉出實際例子?(了解)文件名.class為后綴名的文件是什么?在什么階段產生的?是可直接運行的二進制可執(zhí)行文件嗎?(此處是bytecode,而只有.com和.exe是在PC上可直接運行的二進制可執(zhí)行文件,需要另外單獨轉換)如果一個系統想運行Java程序,必須安裝JDK嗎?Eclipse是開發(fā)Java語言必需的軟件工具嗎?

SyntaxRulesforIdentifiers(見下頁或原先課件)2Chapter02數據與表達式原型/基本/原生類型:(變量分為原型類型和類類型)原型類型強調:小寫開頭(習慣.又例如:變量Can11是否合法?)包裝類:大寫(規(guī)定)

自己寫的類:大寫(習慣)例如:

Boolean類型和boolean類型的區(qū)別、Int的寫法和int類型、Character與char類型的區(qū)別。Java中的簡單(基本)數據類型一般是指原型類型賦值語句與表達式:賦值的含義,原型類型賦值與類類型變量賦值的區(qū)別標識符的命名規(guī)則:1.字母和下劃線_開頭,含字母,數字,下劃線;2.不能用關鍵字;3.$可以開頭或在標識符內,但慎用.4.符號”-”可以嗎?5。eclipse是保留字嗎?Java區(qū)分大小寫:例如:Return是關鍵字嗎?可做變量嗎?

3原型類型討論:原型類型占用的內存字節(jié)數量,其變量的取值范圍?例如:

long、double、byte、char和short等類型各占用多少內存?取值范圍?Java默認的小數及整數類型是什么?專用賦值運算符:a+=b;a+=b--;含義?簡單輸入與輸出:

語句System.out.println(eggsPerBasket+“eggsperbasket.”)中“+”號的含義?System.out.println("a="+a);System.out.println(a+b+"a="+(a-b));System.out.println("a="+a+b);數字常量:

八進制、十六進制、e記數法的正確寫法賦值兼容性問題:

隱式轉換規(guī)則:類型強轉:inti=2.0有問題,必須添加強轉指令(int)inta=‘a’;合法。

Longa=1000;是否合法?(掌握自動包裝的概念)4算術運算符:+-*/%++--等等表達式內部生成值類型一般先轉為較復雜類型例如:intx=12,y=5則x/y=?,(x+10)/y=?例如:intx=2;doubley=4;x+y結果的類型?x/y?x/++y?括號和運算符優(yōu)先級規(guī)則(見附錄D)String類—字符串變量,連接(+)操作和其他String方法熟悉常用的String方法:length(),

toLowCase(),equals(),substring(),replace(),charAt(),toCharArray(),indexof()等等.a.toLowCase().substring(1,4)的含義?鍵盤和屏幕I/O----println和print轉義字符的含義與使用:System.out.println("thisisa\napple");System.out.println("thisisa\tapple");System.out.println("thisisa\\apple");5字符串對象的兩種生成形式Stringname1=newString(“JamesGosling”);

Stringname1=“JamesGosling”;問題:如何比較兩個字符串的長度?是用什么方法?是.Length()方法還是.equals()方法?

他們分別做什么?問題:String[]name=newString[100];執(zhí)行后各元素的內容是什么?掌握String類型變量執(zhí)行方法后的內容不變性。了解基本類庫和標準類庫中各種包(見下頁解釋)的導入方法。(import語句的用途)知道包裝類的各種基本名稱、方法的使用及轉換。自動包裝的概念:Intx=180;(√)而Doubled=3;(X)包裝類一般有靜態(tài)方法可用,而簡單變量呢?了解隨機數生成器對象的創(chuàng)建和使用。了解Math類的各種方法的基本用法。了解格式化輸出的類的基本用法。Chapter03使用類和對象6Chapter04定義類與方法(編寫類)類與方法:類中的變量有兩種:實例變量:跟著對象走,不同對象有不同副本(要引用實例變量的話,必須標明是哪個對象的)實例變量在創(chuàng)建對象時由java初始化.舉例:int型實例變量x在創(chuàng)建對象時被java初始化為0.靜態(tài)變量:跟著類定義走,只有一個副本靜態(tài)變量:其值也是由java初始化(定義時).方法:

分類:有返回值方法(用return語句返回)注意:一般不能出現返回值和方法頭不一致的情況和無返回值(方法頭:void,或稱為空方法)調用方法:靜態(tài)方法:通過類名(例如:Math.sqrt(33);)非靜態(tài)方法:通過對象名intmm(intl){return99.99}只可以隱式轉換return什么?變量?類名?7方法中的參數:(形參不能用public、static等修飾)原型類型----傳值對象----傳址調用方法時形參和實參類型不匹配時,java可以進行自動類型轉換.(轉換順序是java默認的規(guī)則)方法中聲明的變量----局部變量局部變量----只在方法體內有效,java不自動給予初始化,使用時必須由程序員來進行初始化.塊中聲明的變量也是局部變量信息隱藏和封裝------修飾符:this,public,private

this:表示當前的對象問題:在main方法中是否可以有this.n出現?(假設n為靜態(tài)變量)(N)public:對實例變量和方法的使用沒有限制(可以在類的定義體外使用)private:對實例變量—類定義體之外不能直接引用該變量.對方法—類定義體之外不能調用該方法只能修飾實例變量8protected修飾符的基本屬性是什么?(了解)比如對屬性的使用范圍的限制!子類是否可用?其他的類能否使用?(該修飾符的作用介于public和private之間)對象和引用:類類型變量和原型變量的比較:原型變量包含該變量的“值”對象(類類型變量)只能存放該對象在內存中的首地址類類型變量在方法中作為參數:類類型變量作為參數出現時也是“傳值”,而因為對象存儲的是內存塊首地址,所以其最終傳遞了“傳址”.(實參把“首地址”傳給了形參)注意類類型變量中=和==的使用信息隱藏和封裝的基本思想是什么?什么樣的做法算是信息隱藏,封裝?(例如通過方法來訪問各種實例變量(簡單變量及對象),各種修飾符的采用等等)9掌握構造方法的寫法及若干規(guī)定構造方法與一般方法的不同之處:構造方法與類名相同Notethataconstructorhasnoreturntypespecifiedinthemethodheader,notevenvoid(構造方法沒有返回類型的說明)書寫一個類時可以自己不寫構造方法。10Chapter05條件和循環(huán)語句條件運算符的含義:y=((num1>num2)?num1:num2);分支語句if….else布爾表達式:注意==號的含義,以及各種比較符號(>=等)Java復合布爾表達式邏輯運算符號(||,&&等)若score為double類型,則if(score>=90)結果?字符串比較:equals方法(比較兩串的字典順序)多分支ifelse及switch語句(break語句在這里的含義,缺省該語句的情況怎么辦?例如:循環(huán)內部含switch語句,而switch內有的缺省有的不缺省,每次循環(huán)執(zhí)行switch時都不走同一路線,怎么辦?)Switch語句的控制表達式的結果的內容要求(什么類型?4種)循環(huán)語句while,do-while,forbreak,continue,exit等語句的含義與用法例:在多重循環(huán)中執(zhí)行break結果是什么?是跳出所有循環(huán)的層次嗎?又例:執(zhí)行continue的結果是跳出本次循環(huán)而重新開始嗎?在循環(huán)語句中執(zhí)行return的結果是什么?注意while()語句括號中的值為布爾變量,為true或false.例如:intx=10;while(x++){….}---------結果?11continue的基本意思:結束本次循環(huán),跳到哪里?break的基本意思:跳出循環(huán)體(單重?多重的情況呢)return的基本意思:跳出所有循環(huán),返回上級方法或系統。布爾表達式及布爾變量常用符號及運算優(yōu)先級規(guī)則(見附錄D)布爾表達式的基本含義(到底用來干什么?)討論:

例如:inta=10,b=10,c=10;if((a++>b)||(a>c))System.out.println(“kkkkkk”);結果?

(答案:能夠打印”kkkkkk”)問題1:假設執(zhí)行System.out.println(x/9);之后,x有變化否?問題2:假設執(zhí)行System.out.println(x++/9);之后,x有變化否?迭代器的概念:僅做參考12本章復習題目:基本概念題(如上頁----可做選擇題目)使用上述控制流語句等編寫程序:寫出循環(huán)體的執(zhí)行結果。問題:使用循環(huán)嵌套:編寫程序----實現矩陣的乘法。(使用幾重循環(huán)?)問題:找出一個數據區(qū)域中滿足某種條件的數據。(熟練使用/,%等算術運算符)進行計算數制的提取和運算(例如:尋找1000到1800之間的個位與十位之和為某個固定值的所有的數)問題:如何計算得到其個位和十位等各個數位的值?數列的階乘例如:1/n!----根據精度要求求出n的值綜合一點的計算題目:例如:1+1/2!-1/4!+1/6!+(-1)n+1*1/(2n)!

(涉及方法(帶參數)的調用等)13單純編寫程序題目:問題1:水仙花數指三位數中每個數字的立方和與自身相等的數字。例如:數字370,滿足3*3*3+7*7*7+0*0*0=370.試輸出所有的水仙花數。

for(inti=100;i<1000;i++){inta=i%10;intb=(i/10)%10;intc=i%100;if(a*a*a+b*b*b+c*c*c==i){system.out.println(i);}}問題2:某些兩位整數,該數的平方的最后兩位還是該整數,求出所有兩位數中有此種特征的整數。自己找題目練習,也可參考當時課堂練習14單純的閱讀程序題目:問題:for循環(huán)內部:含switch語句,而switch(復雜條件(多個變量的++操作,模除等)),多個case分支內有的含break語句,有的不含。還有default分支等等。數組的運算處理:上/下三角計算處理,將數組按照順、逆時針的逐個計算、處理、賦值等等。15Chapter06面向對象設計方法的調用:類名/對象名.方法名this.方法名(當要調用的方法在同一個類中時,this可以省略)靜態(tài)方法修飾符:static靜態(tài)方法可以不需要任何類型的對象而直接調用(類名.方法名)靜態(tài)方法不能調用類中的實例變量

(即使是在main方法中也不行,要調用的話必須創(chuàng)建對象,并指明是哪個對象的實例變量)(問題:在main方法中是否可以有this.n出現?(假設n為靜態(tài)實例變量))靜態(tài)方法不能調用類中的非靜態(tài)方法,除非創(chuàng)建對象靜態(tài)方法可以調用靜態(tài)方法(同類方法可以互相調用)非靜態(tài)方法可以調用靜態(tài)方法(java的合理規(guī)定)。16靜態(tài)變量修飾符:static靜態(tài)變量只有一個副本,即使所在的類已經創(chuàng)建多個對象也是如此.(靜態(tài)變量在定義時即由java自動賦予初始值,在方法中可以直接使用之)靜態(tài)方法可以調用靜態(tài)變量?;仡櫍篗ath類,Integer類及其他包裝類的基本意義Math類的標準數學方法(圖5.9)包裝類的基本含義和用途重載在同一個類中擁有一個以上相同名稱的方法定義,稱為方法名稱重載當方法名稱被調用時,java根據參數的數量、類型、次序來判定應該使用哪個定義方法調用時的參數可以進行自動類型轉換(轉換原則是隱式的由低到高原則),但要慎用,因為有時會引起混亂.無法根據返回值的類型來實現重載!(什么意思?搞明白!)17構造函數及編寫時的約定:構造函數是在(利用new)創(chuàng)建對象時所調用的一種方法,一般用來初始化對象中的實例變量程序員沒有編寫任何構造函數(沒有顯式定義),java將自動提供默認的構造函數程序員一旦自己編寫構造函數,java不再自動提供任何默認的構造函數程序員一旦自己編寫構造函數,則必須自己寫出一個默認的構造函數,否則一旦使用默認函數時java將報錯.構造函數中可以使用/調用該類定義中的其他方法.使用new語句創(chuàng)建對象時,自動調用構造函數(若構造函數有println語句,則在屏幕上會有輸出內容)用new語句創(chuàng)建一個子類對象時,怎樣創(chuàng)建父類對象?(答:首先創(chuàng)建父類對象,要不顯式的寫出來,要不自動首先創(chuàng)建(調用super()創(chuàng)建父類對象)構造方法的作用域標識符必須是public嗎?構造方法的形參個數有限制嗎?

18包的使用(進一步說明)定義在同一個包(package)內的類可以不經過import而直接相互使用。使用import語句指明要引用的源程序的路徑,主要是指明程序中要使用的類和包。而不是要引用該包的全部源程序.也不是直接拷貝過來同一個包中的各個類,其類名可以相同嗎?(了解)19

Packages(包的概念)

(僅了解)起因:目前編寫程序時,一個類一個文件,以后的大程序可能有很多文件(類),放在同一個文件夾里面查找很麻煩,也可能用到別人寫的文件(類)集合,于是有重名的問題等等舉例:自己的文件放在d:/work/software/test01文件夾中,別人的放在d:/work/software/test02文件夾中.

要是使用別人的文件或類,需要:在對方的類中聲明packagetest02

在自己的類的聲明importtest02.*

或importtest02.文件名類路徑基目錄:d:/work/software(基本的目錄層次)

當前目錄:是包的名稱.包:是分組到同一個目錄中的許多類的集合20了解接口的含義了解Comparable接口,Iterator接口。了解枚舉類型21Chapter07數組創(chuàng)建數組格式:Base_Type[]Array_Name=newBase_Type[Length];數組下標從0開始數組的可選的初始化方法(可以聲明時用花括號,也可以用程序)可選的數組初始化方法:Objectoob=newint[]{8,9,10};∨int[]a=(int[])oob;∨

float[]s=newint[10];X(錯誤性質:讓編譯器自動將一個整型數組轉換成為一個浮點型數組,而java編譯器無此能力)數組對象的實例變量---length的使用:for(i=0;i<m.length;i++)數組在類與方法中的應用數組可以當實例變量數組元素當方法參數數組名當方法參數方法可以返回數組名22main方法的參數(命令行式的參數傳遞)(掌握)方法main采用String類型的數組作為參數:

publicstaticvoidmain(String[]args)舉例:命令行:

JavaTestProgramJosephineStudent則args數組的賦值?

注意:數組作為對象,使用=和==時如同對一般對象多維數組的基本定義方法(會定義)掌握:循環(huán)語句處理數組的基本技巧使用循環(huán)語句處理數組很合適:一重for循環(huán)可以處理一維數組,

二重for循環(huán)可處理二維數組例如:二維數組元素的有條件填充、讀取和處理變換等23數組的排序(sortarrayofnumbersintheascendingordescendingorder)------了解掌握:課件中的方法(一個方法內解決):publicvoidseletionSort(int[]a)了解:本書中帶接口的較通用的寫法。數組的查找(searchmethod)------了解掌握:課件中的方法(一個方法內解決):publicintbinarySearch(int[]number,intsearchValue)折半查找—見其他教材和參考書的解法。遞歸式的解法?;玖私猓罕緯袔Ы涌诘妮^通用的寫法。24Chapter08繼承繼承的概念:繼承允許我們先定義一個很通用的類(基類),然后通過添加細節(jié)定義出較專用的類(派生類)派生類對基類的繼承性(包括實例變量和方法).派生類的添加性(也包括實例變量和方法).繼承實際上經常性的包含了方法的覆蓋,覆蓋解決了子類和父類之間的重名問題。派生類的構造函數Usesupertoinvokeaconstructorinparentclass一般用來初始化哪里的實例變量?合理的派生類構造函數應該怎樣初始化各個實例變量?怎么樣初始化基類的實例變量,怎么樣初始化派生類自己的實例變量?Usesupertoinvokeacommonmethodinbaseclass(使用super可調用基類的一個普通方法,或者一個被派生類覆蓋的方法)Usethistoinvokeaconstructorwithintheclass問題:派生類繼承父類的構造函數嗎?(No?。?5掌握:super的使用問題:如果在子類構造方法中使用super()關鍵字,必須放在開始之處嗎?此時的super()做什么?創(chuàng)建子類的對象時,實際是首先運行子類自身的構造方法嗎?子類不使用super關鍵字調用父類的構造方法時會是什么情況呢?26覆蓋:

在派生類中,若一個方法定義與基類中已有的某個方法擁有同樣的名稱,參數數目及類型,則稱為覆蓋覆蓋的過程:創(chuàng)建派生類對象后,調用被覆蓋的方法時,調用的是派生類自己的方法例如:原教材圖7.13(畫字符圖形的程序)(了解)Triangletop=newTriangle(indent,topWidth);Boxbase=newBox(indent+(topWidth/2)-(bottomWidth/2),bottomHeight,bottomWidth)top.drawAt(1);base.drawAt(0);注意:方法drawAt()是基類方法而不是子類方法,該方法里面要執(zhí)行方法drawHere(),而這個方法在基類和子類都存在,那么在執(zhí)行上述top.drawAt(1)方法時執(zhí)行的是哪一個drawHere()?(答案:因為top是派生類對象,所以仍然執(zhí)行派生類的方法drawHere())假設top是Figure類型,若將其指向子類,那又怎樣?Figure:圖形Box矩形Triangle三角形27注意:定義覆蓋方法的時候,不能修改方法的返回類型.

例如方法名及參數相同,但方法頭分別是int和double返回值的兩個覆蓋方法的定義,編譯器會報錯.(結論:無法單純根據返回值的類型來實現覆蓋!)final的含義:

修飾屬性:該屬性不能使用程序語句來改變。(定義時一般賦初值)修飾方法:該方法不能在子類中被覆蓋。修飾類名:該類不能被繼承。

問題:final可以修飾什么?能禁止本類之內的重載嗎?static和final同時修飾一個屬性時,必須賦初值嗎?

派生類的類型派生類對象屬于所有的祖先類型,故能擁有多個類型左邊祖先類對象=右邊派生類對象//合法舉例:

Personp1=newperson();Students1=newstudent();

則語句:p1=s1;//valid而語句:s1=p1;//invalid28Object類----所有類的祖先.(那么,它是接口的祖先嗎?)Object類的含義、用途等。(該類中equals(),toString()等方法的原意?)舉例:Objectx;x=“abc”;//合法:左邊祖先類對象=右邊派生類對象抽象(abstract)方法和抽象類抽象方法:某些方法并不打算實際應用,僅僅打算有派生類覆蓋,且有派生類的對象調用.則可以聲明為抽象方法.

那么,抽象方法僅包含什么?不包含什么?抽象類:若類中至少有一個抽象方法,則該類必須聲明為抽象類問題1:abstract類中是否可以有別的非abstract方法?問題2:abstract方法在其子類中是否必須被實現?問題3:abstract可以修飾什么?問題4:abstract修飾的類有祖先類嗎?(可以繼承)DynamicBinding與Polymorphismvariable的提法:

各種文獻解釋有側重,但無論如何都是指在運行時間(runtime)確定最終運行的程序實體和對象可具有多個類型.29動態(tài)綁定舉例:在運行時才確定最終跳轉地址的現象稱為動態(tài)綁定(動態(tài)覆蓋技術)(了解)classZ{voidf(intx){……} voidf(doublex){……}

}classPextendsZ{voidf(intx){……}voidf(doublex){……}}publicclassTestOverride{publicstaticvoidmain(String[]args){ Pt=newP(); t.f(10);t.f(10L);t.f(2.5); }}注意上述例題的類型隱式轉換問題,若不能隱式轉換則由java報錯變量類型決定能調用的方法(根據自身定義)對象決定使用哪個方法(根據現在的指向)30針對上頁的問題:若ClassP中刪除掉方法f(doublex),結果?答:執(zhí)行方法t.f(10L)和t.f(2.5)都實際執(zhí)行ClassZ中的f(doublex)若main方法中改為Zt=newP();問題如下:若此時ClassP中刪除掉方法f(doublex),結果?答:方法t.f(10L)和t.f(2.5)都實際執(zhí)行ClassZ中的f(doublex)若此時ClassZ中刪除掉方法f(doublex),結果?答:編譯報錯,方法t.f(10L)和t.f(2.5)都不行.若main方法中依舊為Pt=newP();但ClassZ中添加了方法f(longx);則結果?答:方法t.f(10L)實際執(zhí)行ClassZ中的f(longx);因為java是先查找派生部分的方法,若不匹配則查找基類的方法,實在不行最后再隱式轉換.(根據學生提問整理)31實際問題(掌握!)能否設計一個抽象類:此時涉及抽象方法的定義和寫法。派生類如何初始化父類的各種屬性/實例變量?能夠完成子類的構造方法。能夠在子類內部實現父類的抽象方法。數據集合(數組)的各個元素分別指向不同的子類對象時,該數據集合如何定義?(見右下圖)

Figure[]s=newFigure[10];

Figure:圖形Box矩形Triangle三角形32弄清多態(tài)和動態(tài)綁定的概念。對象可以有多種類型的具體化:

左邊祖先類對象=右邊派生類對象實際的問題:如果使用父類的引用指向子類的對象,那么可以直接使用此引用調用子類的所有方法嗎?僅了解:利用接口實現多態(tài)性基本問題:java中一個類是否可以實現多個接口?

java中一個類是否可以同時繼承一個類和實現其他接口?一個接口是否可以繼承自另外一個接口?基本問題:java的單繼承有什么好處?(其中:無論是一般類還是抽象類,都是單繼承?。┡判颍毫私庹n件的“一個方法內解決問題”。的寫法

或課本中:listing9.9的寫法。查找:了解折半查找的各種實現方法的寫法。Chapter09多態(tài)性33關于書寫程序:必須掌握書寫一個類的基本寫法:問題:有一個不完整的基類,能否填寫一個基類的set()和get()方法?(可以完成對所有實例變量的“set”,包括簡單類型和類類型)有一個不完整的派生類(下頁右圖Box),能否根據語義填寫該類的方法(必要的構造方法(不包括默認構造方法)和其他方法?)假設有一個Personnel類(員工)的數組s(Personnel[]s),

其元素包含了正式工,臨時工,鐘點工

等派生類型的對象,試寫一排序程序,使s中的所有員工檔案按工齡長短

重新排列順序.(了解)publicvoidsort(Figure[]s)(基本思路是什么?)Personnel:員工正式工臨時工鐘點工34意義:通用性----順延的命題----數組中對象的排序問題假設有一個Figure類的數組s(Figure[]s),其元素包含了Box,Triangle,Circle,等類型的對象,試寫一排序程序,使s中的所有形狀按周長(round)大小進行某種順序排列.(了解)publicvoidsort(Figure[]s)(那么,其基本思路是什么?)(了解)Figure:圖形Box矩形Triangle三角形35Chapter10異常處理Java中的異常處理語法:try-throw-catch

掌握java異常處理的流程注意:catch語句塊只應用于緊貼其前的try語句塊注意:異常是一個對象,而Exception類是所有異常類的根類,是最通用的異常類.可以自己定義異常類異常的聲明和轉移當本方法只拋出異常但又不處理,則必須在方法頭用throws語句進行聲明,讓上級方法來捕獲處理.編寫異常處理程序時,特殊異常處理在先,一般異常處理在后,否則?異常的分類:Exception類是通用異常類,而ArithmeticException異常是變量做分母時其值為0而產生的算術運算異常,而IOException是輸入輸出(例如文件操作)時的異常,還有等等.36注意:忽視(ignore)異常處理的結果是什么?若java程序聲明了異常,但整個程序忽略了處理,也沒有拋給java系統,則編譯報錯!(文件處理時經常遇到。)說明1:try-throw-catch結構中的throw語句的用法課本的示例程序是人為設計的,用了throw語句,實際程序中可能只有try-catch結構,此時若在try語句塊中出現異常,一樣被java拋出并被catch語句塊捕獲并處理finally語句塊的執(zhí)行原則:只要進了try-catch-finallyBlock,即使沒有異常,也執(zhí)行finally-block在try-catch-finallyBlock,有異常并捕獲,執(zhí)行finally-block在try-catch-finallyBlock,有異常沒有被捕獲,也執(zhí)行finally-block通過練習增進對finally語句塊的理解參見習題課中關于異常的練習題(三次習題課其中的第3次)37finally語句塊的執(zhí)行示例(掌握!!)舉例:inti=20;int[]b=newint[10];voidmm()throwsException{try{System.out.println(b[i]);}catch(IOExceptione){…….}finally{System.out.println(“finally”);}…………}問題1:出現IOException異常和不出現該異常時的執(zhí)行次序?問題2:若方法mm帶有int型返回值,return語句出現在catch語句塊的最后,假設異常被捕捉,那么其執(zhí)行次序是什么?假設try版塊中語句是returnb[i];該版塊沒有異常出現,那么執(zhí)行順序?若本句有異常,則順序?實例變量38關于所有不可檢測異常(來自RuntimeException類及其子類)的說明:不可檢測異常可以不捕捉(不用try—catch結構),不聲明(不用throws語句來聲明)問題1:是否可以編寫程序定義一個RuntimeException類的子類?(Y)問題2:即使在方法調用時沒有自己拋出異常,則是否可在方法中用throws語句來聲明和標識異常?(Y)(即:定義了方法可能拋出的異常,不意味著一定拋出異常)問題3:finally段中的語句,是否允許再次出現異常?(Y)簡單問題:創(chuàng)建異常對象(帶有表示提示信息的參數)然后拋出,捕捉后怎樣顯示該異常對象的信息?(用什么方法?)拋出異常意味著有運行錯誤嗎?39異常的習題練習:熟悉各種基本的異常類的類型。研究習題課中的范例及其隨后附屬提出的若干問題。自己尋找相應題目聯系。40Chapter10+流與文件I/O概念:流是一種對象,用于數據流動,它可以把數據輸出到目標,也可以從數據源輸入或讀取數據輸入流,輸出流的概念

Text:

(了解文本文件的輸出)PrintWriteroutFile=newPrintWriter(newBufferedWriter(new("test.dat")));總的含義:打開文件"test.dat"準備輸出.輸出到文本文件:out(………);關閉文本文件:out();注意異常:

41了解:文本文件的輸入(listing5.11)了解:文本文件的輸出(主要掌握第十章的Listing10.7)注意:不會單獨考察文件操作,一般結合其他的計算問題,例如從鍵盤讀入數據并計算,或把計算及處理結果寫入文件,等等.參見習題課中關于文本文件的練習題一般性問題:(掌握文件操作的基本原理)File類能對文件進行讀寫操作嗎?是基本類嗎?文本文件和二進制文件,讀到文件末尾分別會有什么不同?Java可以把文本文件當成一般二進制文件進行操作嗎?

42Chapter11遞歸(掌握?。┻f歸的基本概念.遞歸:方法定義中包含對自己的調用.遞歸方法中的一個語句塊(選擇)應該不調用本身,而應該是直接結果.而每次調用本身必須“smallerversionofitself”,這樣才可能達到中止條件能夠寫不太復雜的遞歸方法.

先寫出遞歸調用主體再寫出遞歸的停止情況通常有if--else語句參照、掌握課堂講解的內容.

(當時的習題課練習等)深入分析遞歸過程,完全掌握課堂講解的內容,達到習題課上對遞歸問題寫作方法的要求,能將以前章節(jié)的某些算法改寫成遞歸算法。

(可以自己尋找一些題目進行練習)43Chapter12集合

(掌握!)§12.XX鏈表看懂結點類(10.4ListNode)和鏈表類(10.5StringLinkedList)以及(10.8LinkedListDemo)的基本定義及含義,掌握鏈表類程序(10.11StringLinkedListWithIterator)的主要方法。掌握鏈表類中各種基本方法的實現length()addANodeToStart(StringaddData)deleteHeadNode()Find(Stringtarget)showList()等方法的具體寫法.思考:對已經存在的鏈表執(zhí)行某種操作(例如:(1)讀出鏈表數據進行排序.(2)遍歷鏈表,依次將符合條件的節(jié)點數據存入一個數據結構或文本文件等.(3)在無序的舊鏈表基礎上建立一個有序的新鏈表.(3)針對已有鏈表,反順序輸出結點數據內容等)問題:若ListNode類中的實例變量data和link都改成public型,那么上述方法如何改寫?(了解)內部類和迭代器----知道課堂簡介44接上頁:“鏈表內容存入文本文件”的基本思路?(基本了解)(回答同學提問)主要參考第十章的listing10.7的結構步驟:1.創(chuàng)建輸出流對象,打開文本文件

(可使用try—catch結構捕捉異常)(捕捉異常的結構見郵件中Text)2.position=head;

用遍歷的方法找出每一個data.用“流對象.println()”方法寫入文件.3.最后關閉文件等.遍歷鏈表,將某些內容存入其他數據結構呢?(了解?。?5(掌握)推薦鏈表類程序:StringLinkedListWithIterator.java含有內部類,因此各個方法都重寫,涉及實例變量的使用方式。插入一個節(jié)點不再僅是一種方法,本程序提供了兩種節(jié)點插入方法:(1)在鏈表的第一個節(jié)點之前插入新節(jié)點;(2)在某個節(jié)點后面插入新的節(jié)點。

問題:如何在鏈表中某個特征節(jié)點后面插入新節(jié)點?含有迭代器式的處理模式:例如在方法length()里面有“position=position.link;”語句。刪除節(jié)點也新的更切合實際的方法設計:

deleteCurrentNode()------刪除當前節(jié)點;如何刪除的?具體思路是什么?

問題:如何在鏈表中某個特征節(jié)點后面刪除新節(jié)點?同時注意研究該程序的其他方法。46問題答疑

注:本解答并非與考題有直接關系,只是根據學生提問整理而成(1):數組定義:inta[]=newint[15];int[]a=newint[15];哪個正確?答:都可以.編譯器將接受上述兩種表示方法.(2):基類方法為publicinta(intx,inty);派生類方法為inta(intx,inty);可以這樣覆蓋嗎?答:不可以.方法覆蓋時必須修飾符完全一致這種寫法實際上是縮小了方法的使用權限(在目前學習階段沒有縮小權限,但在使用包的情況下權限將縮小)(3):基類方法為publicinta(intx,inty);派生類方法為public

voida(intx,inty);可以這樣實現覆蓋方法嗎?答:不可以.編譯將報錯,因為這既不是方法的重載(譯文版教材:無法根據返回值的類型來實現重載),也不是方法的覆蓋(方法名之前的修飾符要完全一致,方法名之后的參數數目,類型要完全一樣)47(4):若在派生類中自己編寫缺省構造函數,而在里面又只初始化了部分的實例變量,那么另外的實例變量的值是否還被自動初始化?答:現在版本的java仍將對缺省構造函數中未能涉及到的實例變量進行初始化。例如:某個類PetRecord有三個實例變量privateStringname;privateintage;//inyearsprivatedoubleweight;//inpounds若缺省構造函數為:

publicPetRecord(){name="Noname.";age=0;//weight=5;}則創(chuàng)建對象后,打印實例變量的結果為:"Noname.“,0,0.048(5):數組定義:inta[][]=newint[15][];inta[][]=newint[][1

溫馨提示

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

評論

0/150

提交評論