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

下載本文檔

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

文檔簡介

1、1Chapter02 數(shù)據(jù)與表達(dá)式原型/基本/原生類型: (變量分為原型類型和類類型)原型類型強調(diào): 小寫開頭 (習(xí)慣. 又例如: 變量Can11是否合法?)包裝類: 大寫 (規(guī)定) 自己寫的類: 大寫(習(xí)慣)例如: Boolean類型和boolean類型的區(qū)別, Int的寫法和int類型的區(qū)別Java中的簡單數(shù)據(jù)類型一般是指原型類型賦值語句與表達(dá)式: 賦值的含義, 原型類型賦值與類類型變量賦值的區(qū)別 標(biāo)識符的命名規(guī)則:1.字母和下劃線_開頭, 含字母,數(shù)字,下劃線; 2.不能用關(guān)鍵字; 3.$可以開頭或在標(biāo)識符內(nèi),但慎用. 4.符號”-”可以嗎? 5。eclipse是保留字嗎?Java區(qū)分大

2、小寫: 例如: Return是關(guān)鍵字嗎? 可做變量嗎? 第1頁,共46頁。2原型類型討論:原型類型占用的內(nèi)存字節(jié)數(shù)量, 其變量的取值范圍? 例如: byte、char和short類型各占用多少內(nèi)存? 取值范圍?專用賦值運算符:a +=b;a +=b-;含義?簡單輸入與輸出: 語句System.out.println(eggsPerBasket + “ eggs per basket.”)中“+”號的含義? System.out.println( a= + a ); System.out.println( a+b+ a=); System.out.println( a= + a + b);數(shù)字常

3、量: 八進(jìn)制、十六進(jìn)制、e記數(shù)法的正確寫法賦值兼容性問題: 隱式轉(zhuǎn)換規(guī)則: 類型強轉(zhuǎn): int i=2.0 有問題, 必須添加強轉(zhuǎn)指令(int) int a=a;合法。 Long a =1000; 是否合法?(掌握自動包裝的概念)第2頁,共46頁。3算術(shù)運算符: + - * / % + - 等等表達(dá)式內(nèi)部生成值類型一般先轉(zhuǎn)為較復(fù)雜類型例如: int x=12, y=5 則 x/y=?, (x+10)/y=?例如: int x; double y; x+y結(jié)果的類型?括號和運算符優(yōu)先級規(guī)則 (見附錄D)String類字符串變量, 連接(+)操作和其他String方法常用的String方法:len

4、gth(), toLowCase(), substring(),replace(),charAt(), toCharArray()等等. a.toLowCase( ).substring(1,4)的含義? (了解)鍵盤和屏幕 I/O-println和print 轉(zhuǎn)義字符的含義與使用: System.out.println( this is an apple ); System.out.println( this is at apple ); System.out.println( this is a apple );第3頁,共46頁。4字符串對象的兩種生成形式 String name1= ne

5、w String(“James Gosling”); String name1= “James Gosling”;問題: 如何比較兩個字符串的長度?是用什么方法?是.Length()方法還是 .equals()方法? 問題: String name= new String100; 執(zhí)行后各元素的內(nèi)容是什么?掌握String類型變量執(zhí)行方法后的內(nèi)容不變性。 了解基本類庫和標(biāo)準(zhǔn)類庫中各種包(見下頁解釋)的導(dǎo)入方法。(import 語句的用途)知道包裝類的各種方法的用法及轉(zhuǎn)換方法。自動包裝的概念:Int x=180;了解隨機數(shù)生成器對象的創(chuàng)建和使用。了解Math類的各種方法的基本用法。了解格式化輸出

6、的類的基本用法。Chapter03 使用類和對象第4頁,共46頁。5Chapter04 定義類與方法(編寫類)類與方法:類中的變量有兩種:實例變量: 跟著對象走, 不同對象有不同副本(要引用實例變量的話,必須標(biāo)明是哪個對象的)實例變量在創(chuàng)建對象時由java初始化.舉例:int型實例變量x在創(chuàng)建對象時被java初始化為0.靜態(tài)變量: 跟著類走, 只有一個副本靜態(tài)變量: 其值也是由java初始化(定義時). 方法: 分類: 有返回值方法(用return語句返回)注意: 一般不能出現(xiàn)返回值和方法頭不一致的情況和無返回值 (方法頭: void, 或稱為空方法)調(diào)用方法: 靜態(tài)方法: 通過類名 ( 例如

7、: Math.sqrt(33); )非靜態(tài)方法: 通過對象名 int mm(int l) return 99.99只可以隱式轉(zhuǎn)換第5頁,共46頁。6方法中的參數(shù):(形參不能用public、static等修飾)原型類型-傳值對象-傳址調(diào)用方法時形參和實參類型不匹配時, java可以進(jìn)行自動類型轉(zhuǎn)換. (轉(zhuǎn)換順序是java默認(rèn)的規(guī)則)方法中聲明的變量-局部變量局部變量-只在方法體內(nèi)有效, java不自動給予初始化,使用時必須由程序員來進(jìn)行初始化. 塊中聲明的變量也是局部變量信息隱藏和封裝-修飾符: this, public, private this: 表示當(dāng)前的對象 問題: 在main方法中是否

8、可以有this.n出現(xiàn)? (假設(shè)n為靜態(tài)變量) (N)public: 對實例變量和方法的使用沒有限制(可以在類的定義體外使用)private: 對實例變量類定義體之外不能直接引用該變量. 對方法類定義體之外不能調(diào)用該方法 只能修飾實例變量第6頁,共46頁。7protected修飾符的基本屬性是什么? (掌握)比如對屬性的使用范圍的限制!子類是否可用?其他的類能否使用?(該修飾符的作用介于public和private之間)對象和引用:類類型變量和原型變量的比較:原型變量包含該變量的“值”對象(類類型變量)只能存放該對象在內(nèi)存中的首地址類類型變量在方法中作為參數(shù):類類型變量作為參數(shù)出現(xiàn)時也是“傳值

9、”, 而因為對象存儲的是內(nèi)存塊首地址, 所以其最終傳遞了“傳址”. (實參把“首地址”傳給了形參)注意類類型變量中=和=的使用信息隱藏和封裝的基本思想是什么? 什么樣的做法算是信息隱藏, 封裝? (例如通過方法來訪問實例變量, 各種修飾符的采用等等)第7頁,共46頁。8Chapter05 條件和循環(huán)語句條件運算符的含義:y=(num1num2) ? num1:num2);分支語句 if .else 布爾表達(dá)式: 注意=號的含義, 以及各種比較符號(=等) Java復(fù)合布爾表達(dá)式邏輯運算符號 (|, &等)若score為double類型,則if(score = 90)結(jié)果?字符串比較: equa

10、ls方法 (比較兩串的字典順序)多分支if else及switch語句(break語句在這里的含義, 缺省該語句的情況怎么辦? 例如:循環(huán)內(nèi)部含switch語句,而switch內(nèi)有的缺省有的不缺省,每次循環(huán)執(zhí)行switch時都不走同一路線,怎么辦?) Switch語句的控制表達(dá)式的內(nèi)容要求 (什么類型? 4種)循環(huán)語句 while, do-while, forbreak, continue, exit等語句的含義與用法例: 在多重循環(huán)中執(zhí)行break結(jié)果是什么?是跳出所有循環(huán)的層次嗎? 又例:執(zhí)行continue的結(jié)果是跳出本次循環(huán)而重新開始嗎? 在循環(huán)語句中執(zhí)行return的結(jié)果是什么?注意

11、while()語句括號中的值為布爾變量, 為true或false.例如: int x=10; while(x+). -結(jié)果?第8頁,共46頁。9continue 的基本意思:結(jié)束本次循環(huán),跳到哪里?break 的基本意思:跳出循環(huán)體(單重?多重的情況呢)return 的基本意思:跳出所有循環(huán),返回上級方法或系統(tǒng)。布爾表達(dá)式及布爾變量常用符號及運算優(yōu)先級規(guī)則(見附錄D)布爾表達(dá)式的基本含義(到底用來干什么? )討論: 例如: int a=10,b=10,c=10; if(a+b)|(ac)System.out.println(“kkkkkk”); 結(jié)果? (答案: 能夠打印”kkkkkk”)問題

12、1: 假設(shè)執(zhí)行System.out.println(x/9);之后, x有變化否?問題2: 假設(shè)執(zhí)行System.out.println(x+/9); 之后, x有變化否?迭代器的概念:僅做參考第9頁,共46頁。10本章復(fù)習(xí)題目:基本概念題(如上頁-可做選擇題目)使用上述控制流語句等編寫程序:寫出循環(huán)體的執(zhí)行結(jié)果。問題:使用循環(huán)嵌套:編寫程序-實現(xiàn)矩陣的乘法。(使用幾重循環(huán)?)問題:找出一個數(shù)據(jù)區(qū)域中滿足某種條件的數(shù)據(jù)。(熟練使用/, %等算術(shù)運算符)進(jìn)行計算數(shù)制的提取和運算(例如:尋找1000到1800之間的個位與十位之和為某個固定值的所有的數(shù))問題:如何計算得到其個位和十位等各個數(shù)位的值?

13、數(shù)列的階乘例如: 1/n!-根據(jù)精度要求求出n的值綜合一點的計算題目:例如: 1+1/2!-1/4!+1/6!+(-1)n+1*1/(2n)! (涉及方法(帶參數(shù))的調(diào)用等)自己找題目練習(xí),也可參考當(dāng)時課堂練習(xí)第10頁,共46頁。11Chapter06 面向?qū)ο笤O(shè)計方法的調(diào)用:類名/對象名.方法名this.方法名 (當(dāng)要調(diào)用的方法在同一個類中時, this可以省略)靜態(tài)方法修飾符: static靜態(tài)方法可以不需要任何類型的對象而直接調(diào)用(類名.方法名)靜態(tài)方法不能調(diào)用類中的實例變量 (即使是在main方法中也不行, 要調(diào)用的話必須創(chuàng)建對象, 并指明是哪個對象的實例變量) (問題: 在main方

14、法中是否可以有this.n出現(xiàn)? (假設(shè)n為靜態(tài)實例變量) )靜態(tài)方法不能調(diào)用類中的非靜態(tài)方法, 除非創(chuàng)建對象靜態(tài)方法可以調(diào)用靜態(tài)方法 (同類方法可以互相調(diào)用)非靜態(tài)方法可以調(diào)用靜態(tài)方法 (java的合理規(guī)定) 。 第11頁,共46頁。12靜態(tài)變量修飾符: static靜態(tài)變量只有一個副本, 即使所在的類已經(jīng)創(chuàng)建多個對象也是如此. (靜態(tài)變量在定義時即由java自動賦予初始值,在方法中可以直接使用之) 靜態(tài)方法可以調(diào)用靜態(tài)變量?;仡櫍篗ath類, Integer類及其他包裝類的基本意義Math類的標(biāo)準(zhǔn)數(shù)學(xué)方法(圖5.9)包裝類的基本含義和用途重載在同一個類中擁有一個以上相同名稱的方法定義, 稱

15、為方法名稱重載當(dāng)方法名稱被調(diào)用時, java根據(jù)參數(shù)的數(shù)量、類型、次序來判定應(yīng)該使用哪個定義方法調(diào)用時的參數(shù)可以進(jìn)行自動類型轉(zhuǎn)換(轉(zhuǎn)換原則是隱式的由低到高原則),但要慎用,因為有時會引起混亂.無法根據(jù)返回值的類型來實現(xiàn)重載!(什么意思? 搞明白!)第12頁,共46頁。13構(gòu)造函數(shù)及編寫時的約定: 構(gòu)造函數(shù)是在 (利用new) 創(chuàng)建對象時所調(diào)用的一種方法, 一般用來初始化對象中的實例變量程序員沒有編寫任何構(gòu)造函數(shù)(沒有顯式定義), java將自動提供默認(rèn)的構(gòu)造函數(shù)程序員一旦自己編寫構(gòu)造函數(shù), java不再自動提供任何默認(rèn)的構(gòu)造函數(shù)程序員一旦自己編寫構(gòu)造函數(shù), 則必須自己寫出一個默認(rèn)的構(gòu)造函數(shù),

16、否則一旦使用默認(rèn)函數(shù)時java將報錯 . 構(gòu)造函數(shù)中可以使用/調(diào)用該類定義中的其他方法.使用new 語句創(chuàng)建對象時,自動調(diào)用構(gòu)造函數(shù)(若構(gòu)造函數(shù)有println語句,則在屏幕上會有輸出內(nèi)容)用new語句創(chuàng)建一個子類對象時,怎樣創(chuàng)建父類對象?(答:首先創(chuàng)建父類對象,要不顯式的寫出來,要不自動首先創(chuàng)建)構(gòu)造方法的作用域標(biāo)識符必須是public嗎?構(gòu)造方法的形參個數(shù)有限制嗎? 第13頁,共46頁。14包(了解)使用import語句指明要引用的源程序的路徑,而不是要引用該包的全部源程序.同一個包中的各個類,其類名可以相同嗎? (了解)第14頁,共46頁。15 Packages (包的概念) (了解)起

17、因: 目前編寫程序時, 一個類一個文件, 以后的大程序可能有很多文件(類), 放在同一個文件夾里面查找很麻煩,也可能用到別人寫的文件(類)集合, 于是有重名的問題等等舉例: 自己的文件放在 d:/work/software/test01文件夾中, 別人的放在 d:/work/software/test02文件夾中. 要是使用別人的文件或類, 需要: 在對方的類中聲明 package test02 在自己的類的聲明 import test02.* 或import test02.文件名 類路徑基目錄: d:/work/software (基本的目錄層次) 當(dāng)前目錄: 是包的名稱. 包: 是分組到同

18、一個目錄中的許多類的集合第15頁,共46頁。16了解接口的含義了解Comparable接口, Iterator接口。了解枚舉類型第16頁,共46頁。17Chapter07 數(shù) 組 創(chuàng)建數(shù)組格式: Base_Type Array_Name = new Base_TypeLength;數(shù)組下標(biāo)從0開始數(shù)組的可選的初始化方法(可以聲明時用花括號, 也可以用程序)可選的數(shù)組初始化方法: Object oob=new int 8,9,10; int a=(int)oob; float s=new int10; X(錯誤性質(zhì):讓編譯器自動將一個整型數(shù)組轉(zhuǎn)換成為一個浮點型數(shù)組,而java編譯器無此能力)數(shù)組

19、對象的實例變量-length的使用:for(i=0;im.length;i+) 數(shù)組在類與方法中的應(yīng)用數(shù)組可以當(dāng)實例變量數(shù)組元素當(dāng)方法參數(shù)數(shù)組名當(dāng)方法參數(shù)方法可以返回數(shù)組名第17頁,共46頁。18main方法的參數(shù)(命令行式的參數(shù)傳遞)(了解)方法main采用String類型的數(shù)組作為參數(shù): public static void main(String args)舉例:命令行: Java TestProgram Josephine Student 則args數(shù)組的賦值? 注意: 數(shù)組作為對象, 使用=和=時如同對一般對象多維數(shù)組的基本定義方法 (會定義)掌握:循環(huán)語句處理數(shù)組的基本技巧使用循環(huán)

20、語句處理數(shù)組很合適: 一重for循環(huán)可以處理一維數(shù)組, 二重for循環(huán)可處理二維數(shù)組例如:二維數(shù)組元素的有條件填充、讀取和處理變換等第18頁,共46頁。19數(shù)組的排序(sort array of numbers in the ascending or descending order ) -掌握掌握:課件中的方法(一個方法內(nèi)解決): public void seletionSort( int a )了解:本書中帶接口的較通用的寫法。數(shù)組的查找(search method) -掌握掌握:課件中的方法(一個方法內(nèi)解決): public int binarySearch(int number,int

21、 searchValue)其他教材和參考書的解法。遞歸式的解法?;玖私猓罕緯袔Ы涌诘妮^通用的寫法。第19頁,共46頁。20Chapter08 繼 承繼承的概念: 繼承允許我們先定義一個很通用的類(基類), 然后通過添加細(xì)節(jié)定義出較專用的類(派生類)派生類對基類的繼承性(包括實例變量和方法). 派生類的添加性(也包括實例變量和方法). 繼承實際上經(jīng)常性的包含了方法的覆蓋,覆蓋解決了子類和父類之間的重名問題。派生類的構(gòu)造函數(shù)Use super to invoke a constructor in parent class一般用來初始化哪里的實例變量?合理的派生類構(gòu)造函數(shù)應(yīng)該怎樣初始化各個實例變

22、量?怎么樣初始化基類的實例變量, 怎么樣初始化派生類自己的實例變量?Use super to invoke a common method in base class(使用super可調(diào)用基類的一個普通方法,或者一個被派生類覆蓋的方法)Use this to invoke a constructor within the class問題:派生類繼承父類的構(gòu)造函數(shù)嗎?(No !)第20頁,共46頁。21掌握:super的使用問題:如果在子類構(gòu)造方法中使用super關(guān)鍵字,必須放在開始之處嗎?創(chuàng)建子類的對象時,是首先運行完子類自身的構(gòu)造方法嗎? 子類不使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法時會是什

23、么情況呢?第21頁,共46頁。22覆蓋: 在派生類中, 若一個方法定義與基類中已有的某個方法擁有同樣的名稱, 參數(shù)數(shù)目及類型, 則稱為覆蓋覆蓋的過程:創(chuàng)建派生類對象后, 調(diào)用被覆蓋的方法時, 調(diào)用的是派生類自己的方法 例如:原教材圖7.13(畫字符圖形的程序) Triangle top = new Triangle(indent, topWidth); Box base = new Box(indent + (topWidth/2) - (bottomWidth/2), bottomHeight, bottomWidth) top.drawAt(1); base.drawAt(0);注意:方法

24、drawAt()是基類方法而不是子類方法,該方法里面要執(zhí)行方法drawHere( ),而這個方法在基類和子類都存在,那么在執(zhí)行上述top.drawAt(1)方法時執(zhí)行的是哪一個drawHere( ) ? ( 答案: 因為top是派生類對象,所以仍然執(zhí)行派生類的方法drawHere( ) )假設(shè)top是Figure類型,若將其指向子類,那又怎樣? Figure: 圖形Box矩形Triangle三角形第22頁,共46頁。23注意: 定義覆蓋方法的時候, 不能修改方法的返回類型. 例如方法名及參數(shù)相同, 但方法頭分別是int和double的兩個覆蓋方法的定義, 編譯器會報錯. (結(jié)論:無法根據(jù)返回值

25、的類型來實現(xiàn)覆蓋!)final 的含義: 修飾屬性:該屬性不能使用程序語句來改變。修飾方法: 該方法不能在子類中被覆蓋。修飾類名: 該類不能被繼承。 問題:final可以修飾什么?能禁止本類之內(nèi)的重載嗎?static和final同時修飾一個屬性時,必須賦初值嗎? 派生類的類型派生類對象屬于所有的祖先類型, 故能擁有多個類型左邊祖先類對象=右邊派生類對象 /合法舉例: Person p1=new person(); Student s1=new student(); 則語句:p1=s1; /valid 而語句:s1=p1; /invalid 第23頁,共46頁。24Object類-所有類的祖先類

26、Object類的含義、用途等。舉例:Object x ; x=“abc”; /合法: 左邊祖先類對象=右邊派生類對象抽象(abstract)方法和抽象類抽象方法: 某些方法并不打算實際應(yīng)用,僅僅打算有派生類覆蓋, 且有派生類的對象調(diào)用.則可以聲明為抽象方法. 那么,抽象方法僅包含什么?不包含什么?抽象類: 若類中至少有一個抽象方法, 則該類必須聲明為抽象類問題1:abstract類中是否可以有別的非abstract方法?問題2:abstract方法在其子類中是否必須被實現(xiàn)?問題3:abstract可以修飾什么? 問題:abstract修飾的類有祖先類嗎? Dynamic Binding與Pol

27、ymorphism variable的提法: 各種文獻(xiàn)解釋有側(cè)重, 但無論如何都是指在運行時間(run time)確定最終運行的程序?qū)嶓w. 第24頁,共46頁。25動態(tài)綁定舉例:在運行時才確定最終跳轉(zhuǎn)地址的現(xiàn)象稱為動態(tài)綁定(動態(tài)覆蓋技術(shù)) class Z void f(int x) void f(double x) class P extends Z void f(int x) void f(double x) public class TestOverride public static void main(String args) P t = new P(); t.f(10); t.f(1

28、0L); t.f(2.5); 注意上述例題的類型隱式轉(zhuǎn)換問題, 若不能隱式轉(zhuǎn)換則由java報錯變量類型決定能調(diào)用的方法(根據(jù)自身定義)對象決定使用哪個方法(根據(jù)現(xiàn)在的指向)第25頁,共46頁。26針對上頁的問題:若Class P中刪除掉方法f(double x), 結(jié)果?答: 執(zhí)行方法t.f(10L)和t.f(2.5)都實際執(zhí)行Class Z中的f(double x)若main方法中改為Z t=new P(); 問題如下: 若此時Class P中刪除掉方法f(double x), 結(jié)果?答: 方法t.f(10L)和t.f(2.5)都實際執(zhí)行Class Z中的f(double x)若此時Clas

29、s Z中刪除掉方法f(double x), 結(jié)果?答: 編譯報錯, 方法t.f(10L)和t.f(2.5)都不行.若main方法中依舊為P t=new P(); 但Class Z中添加了方法f(long x); 則結(jié)果?答:方法t.f(10L)實際執(zhí)行Class Z中的f(long x); 因為java是先查找派生部分的方法, 若不匹配則查找基類的方法, 實在不行最后再隱式轉(zhuǎn)換. (根據(jù)學(xué)生提問整理)第26頁,共46頁。27弄清多態(tài)和動態(tài)綁定的概念。對象可以有多種類型的具體化: 左邊祖先類對象=右邊派生類對象實際的問題:如果使用父類的引用指向子類的對象,那么可以直接使用此引用調(diào)用子類的所有方法

30、嗎?僅了解:利用接口實現(xiàn)多態(tài)性基本問題:java中一個類是否可以實現(xiàn)多個接口? java中一個類是否可以同時繼承一個類和實現(xiàn)其他接口?一個接口是否可以繼承自另外一個接口?基本問題: java的單繼承有什么好處?(了解)排序:掌握課件的“一個方法內(nèi)解決問題”。的寫法 或課本中:listing9.9的寫法。 查找:掌握折半查找的各種實現(xiàn)方法的寫法。Chapter09 多態(tài)性第27頁,共46頁。28關(guān)于書寫程序:必須了解書寫一個類的基本寫法:問題:有一個不完整的基類,能否填寫一個基類的set()和get()方法?有一個不完整的派生類(右圖Box),能否根據(jù)語義填寫該類的方法 (必要的構(gòu)造方法(不包括

31、默認(rèn)構(gòu)造方法)和其他方法?)假設(shè)有一個Personnel類(員工)的數(shù)組s(Personnel s) , 其元素包含了正式工, 臨時工, 鐘點工 等派生類型的對象, 試寫一排序程序, 使s中的所有員工檔案按工齡長短 重新排列順序. (了解) public void sort(Figure s) (基本思路是什么?)Personnel: 員工正式工臨時工鐘點工第28頁,共46頁。29意義:通用性-順延的命題-數(shù)組中對象的排序問題假設(shè)有一個Figure類的數(shù)組s(Figure s) ,其元素包含了Box, Triangle, Circle, 等類型的對象, 試寫一排序程序, 使s中的所有形狀按周長

32、(round)大小進(jìn)行某種順序排列. (了解)public void sort(Figure s) (那么,其基本思路是什么?)(了解)Figure: 圖形Box矩形Triangle三角形第29頁,共46頁。30Chapter10 異 常 處 理Java中的異常處理語法: try-throw-catch 掌握java異常處理的流程注意: catch語句塊只應(yīng)用于緊貼其前的try語句塊注意: 異常是一個對象, 而Exception類是所有異常類的根類, 是最通用的異常類.可以自己定義異常類異常的聲明和轉(zhuǎn)移 當(dāng)本方法只拋出異常但又不處理, 則必須在方法頭用throws語句進(jìn)行聲明, 讓上級方法來捕

33、獲處理. 編寫異常處理程序時, 特殊異常處理在先, 一般異常處理在后, 否則?異常的分類: Exception類是通用異常類, 而ArithmeticException異常是變量做分母時其值為0而產(chǎn)生的算術(shù)運算異常,而IOException是輸入輸出(例如文件操作)時的異常, 還有FileNotFoundException等等 .第30頁,共46頁。31注意:忽視(ignore)異常處理的結(jié)果是什么?若java程序聲明了異常, 但整個程序忽略了處理, 也沒有拋給java系統(tǒng), 則編譯報錯! (文件處理時經(jīng)常遇到。)說明1: try-throw-catch 結(jié)構(gòu)中的throw語句的用法課本的示例

34、程序是人為設(shè)計的, 用了throw語句, 實際程序中可能只有try-catch結(jié)構(gòu), 此時若在try語句塊中出現(xiàn)異常, 一樣被java拋出并被catch語句塊捕獲并處理finally語句塊的執(zhí)行原則:只要進(jìn)了try-catch-finally Block, 即使沒有異常, 也執(zhí)行finally-block在try-catch-finally Block, 有異常并捕獲, 執(zhí)行finally-block 在try-catch-finally Block, 有異常沒有被捕獲, 也執(zhí)行finally-block通過練習(xí)增進(jìn)對finally語句塊的理解參見習(xí)題課中關(guān)于異常的練習(xí)題(三次習(xí)題課其中的第3

35、次)第31頁,共46頁。32finally語句塊的執(zhí)行示例(掌握!)舉例: int i=20; int b=new int10;void mm() throws Exception try System.out.println(bi); catch (IOException e) . finally System.out.println(“finally”); 問題1: 出現(xiàn)IOException異常和不出現(xiàn)該異常時的執(zhí)行次序? 問題2: 若方法mm帶有int型返回值, return語句出現(xiàn)在catch語句塊的最后, 假設(shè)異常被捕捉,那么其執(zhí)行次序是什么?假設(shè)try版塊中語句是return b

36、i;該版塊沒有異常出現(xiàn),那么執(zhí)行順序?若本句有異常,則順序? 實例變量第32頁,共46頁。33關(guān)于不可檢測異常(RuntimeException類)的說明:不可檢測異??梢圆徊蹲剑ú挥胻rycatch結(jié)構(gòu)),不聲明(不用throws語句來聲明 ) 問題1:是否可以編寫程序定義一個RuntimeException類的子類?(Y)問題2:即使在方法調(diào)用時沒有自己拋出異常,則是否可在方法中用throws語句來聲明和標(biāo)識異常? (Y)問題3:finally段中的語句,是否允許再次出現(xiàn)異常?(Y) 簡單問題:創(chuàng)建異常對象(帶有表示提示信息的參數(shù))然后拋出,捕捉后怎樣顯示該異常對象的信息?(用什么方法?)

37、第33頁,共46頁。34Chapter10+ 流與文件I/O概念: 流是一種對象, 用于數(shù)據(jù)流動,它可以把數(shù)據(jù)輸出到目標(biāo), 也可以從數(shù)據(jù)源輸入或讀取數(shù)據(jù)輸入流, 輸出流的概念 Text File I/O: (了解文本文件的輸出) PrintWriter outFile = new PrintWriter(new BufferedWriter (new FileWriter (test.dat);總的含義: 打開文件test.dat準(zhǔn)備輸出. 輸出到文本文件: outFile.println();關(guān)閉文本文件:outFile.close();注意異常: FileNotFoundException

38、 第34頁,共46頁。35了解:文本文件的輸入(listing 5.11)了解:文本文件的輸出(主要掌握第十章的Listing10.7)注意: 不會單獨考察文件操作, 一般結(jié)合其他的計算問題, 例如從鍵盤讀入數(shù)據(jù)并計算, 或把計算及處理結(jié)果寫入文件, 等等. 參見習(xí)題課中關(guān)于文本文件的練習(xí)題第35頁,共46頁。36Chapter11 遞 歸 (掌握?。┻f歸的基本概念. 遞歸: 方法定義中包含對自己的調(diào)用.遞歸方法中的一個語句塊(選擇)應(yīng)該不調(diào)用本身, 而應(yīng)該是直接結(jié)果. 而每次調(diào)用本身必須“smaller version of itself” ,這樣才可能達(dá)到中止條件能夠?qū)懖惶珡?fù)雜的遞歸方法.

39、 先寫出遞歸調(diào)用主體再寫出遞歸的停止情況通常有if-else語句參照、掌握課堂講解的內(nèi)容. (當(dāng)時的練習(xí)題等)深入分析遞歸過程,完全掌握課堂講解的內(nèi)容, 達(dá)到習(xí)題課上對遞歸問題寫作方法的要求, 能將以前章節(jié)的某些算法改寫成遞歸算法。 (可以自己尋找一些題目進(jìn)行練習(xí))第36頁,共46頁。37Chapter12 集合 (掌握 !)12.XX 鏈表看懂結(jié)點類(10.4 ListNode)和鏈表類(10.5StringLinkedList)以及(10.8LinkedListDemo)的基本定義及含義:掌握鏈表類中各種基本方法的實現(xiàn)length()addANodeToStart(String addDa

40、ta)deleteHeadNode( )Find(String target) showList() 等方法的具體寫法 . 對已經(jīng)存在的鏈表執(zhí)行某種操作(例如: (1)讀出鏈表數(shù)據(jù)進(jìn)行排序. (2)遍歷鏈表, 依次將符合條件的節(jié)點數(shù)據(jù)存入一個數(shù)據(jù)結(jié)構(gòu)或文本文件等. (3)在無序的舊鏈表基礎(chǔ)上建立一個有序的新鏈表. (3)針對已有鏈表,反順序輸出結(jié)點數(shù)據(jù)內(nèi)容等)問題: 若ListNode類中的實例變量data和link都改成public型,那么上述方法如何改寫? (了解)內(nèi)部類和迭代器-知道課堂簡介第37頁,共46頁。38接上頁: “鏈表內(nèi)容存入文本文件”的基本思路?(基本了解)(回答同學(xué)提問)

41、主要參考第十章的listing10.7的結(jié)構(gòu)步驟: 1. 創(chuàng)建輸出流對象, 打開文本文件 (可使用trycatch結(jié)構(gòu)捕捉異常)(捕捉異常的結(jié)構(gòu)見郵件中TextFileOutputDemo.java) 2. position=head; 用遍歷的方法找出每一個data . 用 “流對象.println()”方法寫入文件. 3. 最后關(guān)閉文件等. 遍歷鏈表,將某些內(nèi)容存入其他數(shù)據(jù)結(jié)構(gòu)呢?(掌握?。┑?8頁,共46頁。39(掌握)推薦鏈表類程序: StringLinkedListWithIterator.java含有內(nèi)部類,因此各個方法都重寫,涉及實例變量的使用方式。插入一個節(jié)點不再僅是一種方法,

42、本程序提供了兩種節(jié)點插入方法:(1)在鏈表的第一個節(jié)點之前插入新節(jié)點; (2)在某個節(jié)點后面插入新的節(jié)點。 問題:如何在鏈表中某個特征節(jié)點后面插入新節(jié)點?含有迭代器式的處理模式:例如在方法length()里面有 “position = position.link;” 語句。刪除節(jié)點也新的更切合實際的方法設(shè)計: deleteCurrentNode( )-刪除當(dāng)前節(jié)點;如何刪除的?具體思路是什么? 問題:如何在鏈表中某個特征節(jié)點后面刪除新節(jié)點?同時注意研究該程序的其他方法。第39頁,共46頁。40 問 題 答 疑注: 本解答并非與考題有直接關(guān)系, 只是根據(jù)學(xué)生提問整理而成(1): 數(shù)組定義: in

43、t a =new int15; int a=new int15; 哪個正確?答: 都可以. 編譯器將接受上述兩種表示方法. (2): 基類方法為public int a(int x, int y); 派生類方法為int a(int x, int y); 可以這樣覆蓋嗎? 答: 不可以. 方法覆蓋時必須修飾符完全一致這種寫法實際上是縮小了方法的使用權(quán)限(在目前學(xué)習(xí)階段沒有縮小權(quán)限,但在使用包的情況下權(quán)限將縮小)(3):基類方法為public int a(int x, int y); 派生類方法為public void a(int x, int y); 可以這樣實現(xiàn) 覆蓋方法嗎? 答: 不可以.

44、編譯將報錯,因為這既不是方法的重載(譯文版教材: 無法根據(jù)返回值的類型來實現(xiàn)重載), 也不是方法的覆蓋(方法名之前的修飾符要完全一致, 方法名之后的參數(shù)數(shù)目, 類型要完全一樣 ) 第40頁,共46頁。41(4): 若在派生類中自己編寫缺省構(gòu)造函數(shù), 而在里面又只初始化了部分的實例變量, 那么另外的實例變量的值是否還被自動初始化?答: 現(xiàn)在版本的java仍將對缺省構(gòu)造函數(shù)中未能涉及到的實例變量進(jìn)行初始化。 例如:某個類PetRecord有三個實例變量 private String name; private int age; /in years private double weight; /i

45、n pounds若缺省構(gòu)造函數(shù)為: public PetRecord( ) name = No name.; age = 0; / weight = 5; 則創(chuàng)建對象后, 打印實例變量的結(jié)果為: No name.“, 0, 0.0 第41頁,共46頁。42(5): 數(shù)組定義: int a =new int15; int a =new int15; 哪個正確?答: 第一個正確. Java對第一個的處理為: 先申請一個一維數(shù)組,長度為15, 可以在程序中對該一維數(shù)組的某個元素用new語句申請不定長的空間. 從而實現(xiàn)不定長數(shù)組.而第二個數(shù)組的表示方法. Java將報錯, 因為無法處理. (Java 提示: Java無法在一個空數(shù)組后面再確定一個數(shù)組的維數(shù)) 象這樣一維數(shù)組的定義: int a =new int; 肯定也錯誤. (6): 構(gòu)造函數(shù)與一般的方法有

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論