《面向對象程序設計(Java)》_第1頁
《面向對象程序設計(Java)》_第2頁
《面向對象程序設計(Java)》_第3頁
《面向對象程序設計(Java)》_第4頁
《面向對象程序設計(Java)》_第5頁
已閱讀5頁,還剩87頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGE課時授課計劃授課日期2月21日 星期二月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題第1章Java概述教學目的與要求:了解Java的發展史和java語言的特點掌握java虛擬機的工作原理掌握java與C,C++的區別和聯系教學重點:java虛擬機的工作原理java與C,C++的區別和聯系教學難點:java虛擬機的工作原理作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第二學期第1周PAGE一、引入(約3min)以“至今世界上已有2000~4000種程序設計語言,Java是有史以來第一個被工業界和學術界同時認可的語言”為切入點引入新課。二、教學進程設計第1章Java和Web(約27min)重點和難點:Java的發展史Java語言的特點Java虛擬機(難點)Java與C,C++的聯系(難點)1.1計算機和萬維網萬維網(World-WideWeb?aWWW):20世紀90年代WWW的雛形最初由瑞士高能物理研究中心實驗室的TimeBerners-Lee在1989年提出1990年10月正式命名為World-WideWebWWW包括:瀏覽器和服務器當時統計:服務器的個數每3~6個月翻一番在經歷了以大型機為代表的集中計算模式和以PC機為代表的分散計算模式之后,互聯網的出現使得計算模式進入了網絡計算時代。問題:大家想一想,在PC下用windows編寫的程序能夠不做修改就直接拿到UNIX系統上運行嗎?網絡計算模式的特點計算機是異構的代碼可以通過網絡在各種計算機上進行遷移1.2程序設計語言和Java一、程序設計語言Java是一種徹底的面向對象通用程序設計語言程序設計語言分類:機器語言:不同的CPU有它自己的機器語言匯編語言高級語言高級語言FORTRAN:1950年末COBOL:1960年初BASICPascalC:1970年AT&T貝爾實驗室開發C++:1980年初至今世界上已有2000~4000種程序設計語言Java吸取了50年來程序設計語言研究的各種新思想以及正反經驗,形成了一種好的程序設計風格。Java是有史以來第一個被工業界和學術界同時認可的語言微軟公司總裁比爾蓋茨先生在經過研究后認為“java語言是長時間以來最卓越的程序設計語言”。二、java語言的產生“有心栽花花不成,無心插柳柳成蔭”Sun公司以經營工作站聞名Sun成立了由JamesGosling負責的Green小組開發消費產品,減輕來自PC的壓力語言的選擇,設計一種以C++為基礎的語言1993年WWW由字符界面發展到圖形界面1994年BillJoe將Java用在因特網的開發中,做出免費使用Java的決定三、Java的命名(約30min)Java原名叫Oak(橡樹)java是印尼的一個小島,盛產咖啡,而程序員往往喜歡喝咖啡,因此取名為java語言。看來,目前java這杯咖啡已經飄香在世界各地。四、Java的特點AppletApplication(1)面向對象封裝性、多態性、繼承性、動態鏈接(2)工作原理WriteOnce,RunAnywhere(3)安全問題Java是在網絡環境下使用的語言一個安全的網絡至少要防止以下幾種破壞的可能性:毀滅系統資源消耗系統資源挖掘系統或個人機密騷擾正常工作的進行(4)多線程Java提供現成的類Thread,只要繼承這個類就可以編寫多線程的程序。1.3Java與C,C++(約35min)Java=“C++”-“復雜性和奇異性”+“安全性和可移植性”1.全局變量在類中定義公共、靜態變量來實現一個全局變量classGlobarVariable{publicstaticglobal_var;}2、指針Java對指針進行了完全的控制,java沒有顯示的指針類型,所有引用都通過使用隱式引用,而不是通過指針來完成的3、數組java中的數組是通過類來實現的數組的邊界要嚴格檢查對象數組:MyObjectarrayOfObj[]=newMyObject[10]把實際的MyObject對象添加到數組中for(inti;i<arrayOfObj.length;i++){arrayOfObj[i]=newMyObject();}4、字符串C中字符串是以一個空字符(\0)結尾的字符數組Java中字符串是個封裝的對象5、內存管理在C語言中,程序員使用庫函數malloc()和free()來分配和釋放內存,C++語言中則是運算符new和delete。再次釋放已經釋放的內存塊或者釋放未被分配的內存塊,會造成系統的崩潰,而忘記釋放不再使用的內存塊也會逐漸耗盡系統資源。在java中,所有的數據結構都是對象,通過運算符new分配內存并得到對象的使用權。無用內存回收機制(運行時間的垃圾收集器)保證了系統資源的完整,避免了內存管理不周而引起的系統崩潰。

6、數據類型在C/C++語言中,不同的平臺上,編譯器對簡單的數據類型如int、float等分別分配不同的字節數。例如:int在IBMPC上為16位,在VAX-11上就為32位,導致了代碼數據的不可移植。在java中,對數據類型的位數分配總是固定的,而不管是在任何的計算機平臺上。因此就保證了java數據的平臺無關性和可移植性。

7、運算符優先級和結合率作用與C一樣New結合型比點符號高Java中沒有重載運算符8、控制流Java中返回布爾值C中返回整數值Java中不支持goto語句,同過例外處理9、頭文件在C/C++語言中使用頭文件聲明類的原型和全局變量及庫函數等,在大的系統中,維護這些頭文件是非常困難的。java不支持頭文件,類成員的類型和訪問權限都封裝在一個類中,運行時系統對訪問進行控制,防止非法的訪問。同時,java中用import語句與其它類進行通信,以便訪問其它類的對象。

10、參數Java不支持函數的變長參數表機制,所有方法必須有特定的參數個數Java中argv[0]對應C中的argv[1]三、小結(約2min)計算機和萬維網程序設計語言和JavaJava與C,C++四、作業(約3min)課后習題1、2課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題第1章Java概述教學目的與要求:掌握Java的應用程序和運行方式掌握java的開發環境教學重點:Java的應用程序和運行方式Java的開發環境教學難點:Java的應用程序和運行方式作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第1周PAGE一、引入(約3min)以“至今世界上已有2000~4000種程序設計語言,Java是有史以來第一個被工業界和學術界同時認可的語言”為切入點引入新課。二、教學進程設計1.2Java應用程序及其運行方式(約37min)1.2.1Application和Applet程序1.2.2Java的體系結構1.2.1Application和Applet程序1.Application2.Applet<HTML><HEAD><TITLE>my</TITLE></HEAD><BODY><appletcode="FirstApplet.class"width=300height=190></applet></BODY></HTML>Drawing方法小結:drawRect(x,y,w,h)drawString(“text”,x,y)小應用與應用程序1、Applet不同點:小應用沒有main()方法的引導,必須嵌入到HTML文件中,用支持Java的瀏覽器來運行Java對小應用施加了限制java應用程序結構小應用的結構1.2.2Java的體系結構1.3Java開發運行環境1.3.1JDK的安裝與設置1.3.2運行Java程序1.3.3JCreator簡介1.3.1JDK的安裝與設置(約30min)安裝機器要求硬件:CPUPII以上,64MB內存,100MB硬盤空間。軟件:Windows98/NT/2000/XP,IE5.0程序清單JDK幫助文檔安裝JDK設置環境變量JAVA_HOMECLASSPATHPATH安裝JDK幫助文檔設置環境變量JAVA_HOME=C:\j2sdk1.4.2(安裝路徑)CLASSPATH=C:\j2sdk1.4.2\lib\dt.jar;C:\j2sdk1.4.2\bin;C:\j2sdk1.4.2\lib\tools.jar;.;PATH=C:\j2sdk1.4.2\bin;安裝sdkJDK目錄結構

以j2sdkl.4.2版本為例,其目錄結構如下描述。JDK\\bin\\包括編譯器、解釋器和一些基本工具。JDK\\demo\\包括一些簡單的示例。JDK\\include\\是Win32子目錄,包括本地方法文件。JDK\\jre\\是Java程序運行環境的根目錄。JDK\\jre\\bin包括平臺運行時的工具和類庫的可執行文件和動態鏈接庫文件。JDK\\jre\\lib包括Java運行環境的代碼庫,默認安裝文件等。JDK\\lib包括類庫文件。JDK\src.zip源代碼壓縮文件。java\bin的目錄下包含義下主要文件:javac:Java編譯器,用來將java程序編譯成Bytecodejava:Java解釋器,執行已經轉換成Bytecode的java應用程序.jdb:Java調試器,用來調試java程序javap:反編譯,將類文件還原回方法和變量.javadoc:文檔生成器,創建HTML文件appletviewer:Java解釋器,用來解釋已經轉換成Bytecode的java小應用程序.安裝sdk1.3.2運行Java程序(約25min)Java程序運行流程1.3.2運行Java程序JDK提供的編譯與運行命令編譯運行Application應用程序運行Applet應用程序1.3.3JCreator簡介JCreator提供Java程序的編輯、編譯和運行的集成開發環境。三、小結(約2min)計算機和萬維網程序設計語言和JavaJava與C,C++四、作業(約3min)實驗1熟悉Java程序的編輯、編譯和運行過程編輯、編譯、運行以下程序,說出程序的功能。改變變量n的初值,觀察運行結果有何變化。課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題第2章Java語言基礎教學目的與要求:掌握標識符和關鍵字的定義了解java的基本數據類型了解常量、變量及塊的定義教學重點:java的基本數據類型常量、變量及塊的定義教學難點:java的基本數據類型常量、變量及塊的定義作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第2周(一)引入(約3min)以“任何程序設計語言,都是由語言規范和一系列開發庫組成的。”為切入點引入新課內容。(二)教學進程設計第2章Java語言基礎(約30min)2.1標識符和關鍵字一、標識符組成:字母數字下劃線(_)美元($)注:第一個字符必須為字母、下劃線或美元符號二、保留字abstract,break,byte,boolean,catch,case,class,char,continue,default,double,do,else,extends,false,final,float,for,finally,if,import,implements,int,interface,instanceof,long,length,native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,while。判斷下列字符是否是正確的標識符:注意:Java區分大小寫字母\u03c0是π的Unicode字符,可以用作標識符三、Smalltalk命名規則:(1)每個名字可以由幾個單詞連接而成(2)對于類名,每個單詞的開頭字母大寫(3)方法名和變量名,第一個字母不大寫(4)常量應該用全部大寫的標識符定義(5)包名全部小寫Java采用16位的Unicode字符集作為字符的內部表示形式每個字符用16位二進制表示支持65536個不同字符其中21000個用于漢、日、朝、希臘、羅馬、阿拉伯數學符號等前256個值包含ASCII碼中的表示2.2基本數據類型(約27min).22.2.3布爾型數據只有兩個值true和false,且它們不對應于任何整數值。布爾型變量的定義如:booleanb=true;常量2.3.1

Truefalse2.3.2

十進制整數

如123,-456,0

八進制整數:以0開頭0123表示十進制數是:-011表示十進制數是:

十六進制整數:以0x或0X開頭0x123表示十進制數是:-0X12表示十進制數是:無論采用什么進制,在輸出到控制臺時,系統都會自動轉化為十進制。Long型:在數值后面多了一個“L”,不能省略。2.3.3字符常量:用一對單引號括起來的單個字符范圍:直接用拉丁字母表示轉義字符要表示字符對應的八進制或Unicode碼轉義字符2.3.4用直雙引號括起來的一串字符標志字符串開始和結束的直雙引號必須在源代碼的同一行上連接運算符(+)“IloveChina!”+“Howdoyoudo?”的結果是:“IloveChina!Howdoyoudo?”2.3.5

十進制數形式

由數字和小數點組成,且必須有小數點,如0.123,1.23,123.0

科學計數法形式

如:123e3或123E3,其中e或E之前必須有數字,且e或E后面的指數必須為整數。

float型的值,必須在數字后加f或F,如1.23f。

double型的值,可在數字后加d或D,如:doublex=22.2D;

不帶任何后綴的浮點數值為double型常量:用保留字final來實現finaltypeSpecifiervarName=value[,varName[=value]…];

如:finalintNUM=100;

2.4變量2.4.1變量聲明的格式:[修飾符]類型標識符;2.4.2增加byte的理由:不同計算機對于多字節數據的存儲方式是不同的Java中沒有無符號整數,且規定了整型和浮點型數據所占的內存字節數,確保了安全性、魯棒性和平臺無關性Java中的字符型數據是16位無符號型數據,它表示Unicode集字符型數據可以轉換為整型數來操作:2.5表達式,語句和塊基本語句:聲明語句inti;表達式語句A+=B;塊:用{}括起來的語句組成塊變量的作用域:從它的定義開始到最小的包含其定義塊的結束classExpress{ publicstaticvoidmain(Stringargs[]){ inta=4; a+=4; { intb; b=a+2; System.out.println(a+""+b); } }}(三)小結(約3min)標識符和關鍵字基本數據類型常量變量表達式,語句和塊(四)作業(約2min)課后習題第1題。課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題運算符、流控制語句教學目的與要求:掌握運算符的使用了解java流控制語句的語法教學重點:運算符的使用和java流控制語句的語法教學難點:類型轉換作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第3周(一)引入(約3min)以“回顧上節課的語法基礎”為切入點引入新課內容。(二)教學進程設計2.6運算符(約37min)2.6.1finalintA=29;2.6.21、基本數據聲明和賦值2、多個數值數據在內存分配2.6.31、雙目運算符注意:1、運算符作用于整型操作數時,任一操作數為long,結果為long,否則為整型。2L+5=7L;3L*4=12L;5/2=2;2、運算符作用于浮點數時,任一操作數為雙精度時,結果也是雙精度,否則為單精度3、取模運算即可以用于整型數,也可以用于浮點型數37.2%10=2.6.5 intx=8,y=5; booleanb=x<y&&x++==y--;intx=8,y=5;booleanb=x<y&x++==y--;2.6.6例:用“異或”加密解密2.6.7三目運算符a=(Test?b:c);測試TestTest=true,則a=b;否則a=c4.6.8廣義賦值運算符變量op=表達式;變量=變量op表達式;例:A+=B;A=A+B;2.6.9對象運算符instanceof用來測試一個對象是否屬于某個指定類或其子類的實例。返回true或falseroster[0]instanceofUndergraduateStudent;event.getSource()instanceofButton;booleanbool=MyObjectinstanceofTextField;2.7運算符的優先級2.8類型轉換2.8.1小定義域類型的值自動轉換到大定義域類型的值2.8.2大定義域轉換到小定義域類型在定義域不直接可比的類型之間轉換(數據類型)變量名或表達式;2.9注釋插入方式:以//開頭,直到此行末尾,稱單行注釋。以/*開頭,直到*/結束,稱多行注釋。以/**開頭,以*/結束2.10流控制語句2.10.1if-elseif(布爾表達式)語句1if(布爾表達式)語句1;else語句2;2.10.2switch語法格式:switch(expression){

casevalue1:statement1;

break;

casevalue2:statement2;

break;

…………

casevalueN:statemendN;

break;

[default:defaultStatement;]

}2.10.31、for循環語法格式:for(initialization;termination;iteration){

body;

}例:冒泡排序法2.While循環語句(約25min)語法格式:[initialization]

while(termination){

body;

[iteration;]

}

3、do-while語句[initialization]

do{

body;

[iteration;]

}while(termination);

4.標號標號:標識符,用來給某個程序塊命名格式:label:程序塊;例:intsum=0;loop:for(inti=0;i<10;i++){sum+=i;}2.10.41、break語句終止當前循環體語句,使程序轉移到下一個語句例:if(check(i)){for(intj=0;j<10;j++){if(j>i)break;}'''}Break停止更外層的塊2.continue語句跳過循環體中continue語句以后剩下的部分,再從循環體頭開始格式:continue;也可以用continue跳轉到指明的外層循環中,這時的格式為

continueouterLable;例:檢查intArray中是否有1~6數字3、return語句return語句從當前方法中退出,返回到調用該方法的語句處,并從緊跟該語句的下一條語句繼續程序的執行。返回語句有兩種格式:

returnexpression;

return;注:return語句通常用在一個方法體的最后,否則會產生編譯錯誤,除非用在if-else語句中(三)小結(約3min)運算符運算符優先級類型轉換注釋流控制語句(四)作業課后習題第8、12題。(約2min)課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題數組的定義和使用教學目的與要求:掌握基本數據類型的數組的定義和使用方法掌握對象數組的定義和使用方法了解把數組傳送給方法的注意事項教學重點:基本數據類型的數組和對象數組的定義和使用方法教學難點:對象數組的定義和使用方法作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第3周一、引入(約3min)以“許多數據結構是編程中不可缺少的組成部分。Java把它們封裝成專門的數據類供用戶使用。本章將一一加以介紹”為切入點引入新課。二、教學進程設計第6章數組和字符串(約27min)6.1數組6.1.1基本數據類型的數組1、一維數組的定義typearrayName[];type[]arrayName;分配內存空間類型[]數組名[]=new類型[數組長度];類型[]數組名=new類型[數組長度];類型[]數組名;//類型數組名[];數組名=new類型[數組長度];2.一維數組的引用arrayName[index]

注:下標從零開始,直到數組長度-1例:publicclassindex{ publicstaticvoidmain(Stringargs[]){ inti; int[]A=newint[5]; for(i=0;i<5;i++) A[i]=i; for(i=A.length-1;i>=0;i--) System.out.println("A["+i+"]="+A[i]); }}3.一維數組的初始化在定義數組的同時進行初始化intA[]={0,1,2,3,4}charspring[]={'春','眠','不','覺','曉','處','處','聞','啼','鳥'};arraycopy()方法char[]writer=newchar[3];System.arraycopy(spring,2,writer,0,3);6.1.2對象數組(約30min)classRabbit{finalcharEYECOLOR='R';finalcharFURCOLOR='W';Stringname;intage;charsex;intspeed;}定義方法publicStringgetName();缺省值:未給定publicintgetAge();缺省值:0publicchargetSex();缺省值:U(F、M、U)publicintgetSpeed();缺省值:0publicvoidsetName(Stringname);publicvoidsetAge(intage);publicvoidsetSex(charsex);publicvoidsetSpeed(intspeed);定義tuzi對象Rabbittuzi;tozi=newRabbit();tozi.setName("Ms.bunny");tozi.setAge(3);tozi.setSex('F');tozi.setSpeed(100);System.out.println("Name:"+tozi.getName());System.out.println("Age:"+tozi.getAge());System.out.println("Sex:"+tozi.getSex());System.out.println("Speed:"+tozi.getSpeed());創建一個對象數組:Rabbit[]rabbit;Rabbit=newRabbit[10];給對象賦值rabbit[0].setName("Ms.bunny");rabbit[0].setAge(3);rabbit[0].setSex('F');rabbit[0].setSpeed(100);1.計算rabbit對象數組中兔子的平均年齡(約35min)floatsum=0,averageAge;for(inti=0;i<rabbit.length;i++){sum+=rabbit[i].getAge();}averageAge=sum/(float)rabbit.length;2、顯示輸出年齡最小和年齡最大的兔子的年齡和名字StringnameOfYoungest,nameOfOldest;intmin,max,age;nameOfYoungest=nameOfOldest=rabbit[0].getName();min=max=rabbit[0].getAge();for(inti=1;i<rabbit.length;i++){age=rabbit[i].getAge();if(age<min){min=age;nameOfYoungest=rabbit[i].getName();}elseif(age>max){max=age;nameOfOldest=rabbit[i].getName();}}System.out.println("Oldest:"+nameOfOldest+"is"+max+"yearsold.");System.out.println("Youngest:"+nameOfYoungest+"is"+min+"yearsold.");利用索引查找使用rabbit對象的變量Rabbityoungest,oldest;youngest=oldest=rabbit[0];for(inti=1;i<rabbit.length;i++){if(rabbit[i].getAge()<youngest.getAge()){youngest=rabbit[i];}elseif(rabbit[i].getAge()>oldest.getAge()){oldest=rabbit[i];}}System.out.println("Oldest:"+oldest.getName()+"is"+oldest.getAge()+"yearsold.");System.out.println("Youngest:"+youngest.getName()+"is"+youngest.getAge()+"yearsold.");3.刪除對象數組中的對象操作方法:把要刪除的對象數組中的元素置上null先把要刪除的對象數組的那個對象換到數組最末位置上,然后把最末位置上置位null6.2把數組傳送給方法publicintsearchMax(float[]number){intIdxOfMax=0;for(inti=1;i<number.length;i++){if(number[i]>number[IdxOfMax]){IdxOfMax=i}}returnIdxOfMax;}調用該方法float[]arr1,arr2;intmax1=searchMax(arr1);intmax2=searchMax(arr2);System.out.println("MaxvalueinArrayOneis");System.out.println(arr1[max1]+"atposition"+max1);System.out.println("MaxvalueinArrayTwois");System.out.println(arr2[max2]+"atposition"+max2);規則:當一個數組被傳送到一個方法時,僅僅是它的引用被傳送,而該數組的拷貝在這個方法中并不創建。三、小結(約3min)基本數據類型的數組對象數組把數組傳送給方法四、作業(約2min)上機練習:計算輸入一行文本中的元音字母的個數。課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題多維數組、字符串教學目的與要求:掌握this關鍵字的使用掌握多維數組的定義和使用方法掌握不變字符串String類的使用教學重點:this關鍵字的使用、多維數組的定義和使用、String類的使用教學難點:this和多維數組的定義及使用方法作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第4周一、引入(約3min)以“回顧一維數組的定義及使用方法,本節介紹java中多維數組的定義及引用”為切入點引入新課。二、教學進程設計2.3this引用(約30min)2.3.1this引用的第一種場合目的:解決名字沖突問題例6-4標識符speed引用了什么?2.3.2this引用的第二種場合把當前對象的名字(引用)作為參數傳送給它調用的另一個對象的方法2.3.3this引用的第三種場合從相同類的一個構造方法調用另一個構造方法注意:this引用專門用來指明當前對象的成員變量或當前對象的方法使用this可以提高程序的可讀性this引用只對實例變量(對象的成員變量),不能對局部變量。2.4多維數組2.4.1聲明和創建二維數組(1)聲明typearrayName[][];type[][]arrayName;(2)創建arrayName=newtype[arrayLength1][arrayLength2];多維數組分配內存空間的方法1、直接分配multiplicationTable=newint[9][9];2.4.2二維數組的引用arrayName[index1][index2]

例:multiplicationTable[2][3];2.4.3二維數組的初始化1、直接對每個元素進行賦值int[][]multiplicationTable=newint[9][9];2、在定義數組的同時進行初始化int[][]multiplicationTable={{1,2,3,4,5,6,7,8,9},{2,4,6,8,10,12,14,16,18},...{9,18,27,36,45,54,63,72,81}};Java語言中,由于把二維數組看作是數組的數組,數組空間不是連續分配的,所以不要求二維數組每一維的大小相同。

注意:創建數組時,數組的最前面的一維或幾維必須指定元素個數,只有后面的方括號中可以不指定個數classMyArray{ publicstaticvoidmain(Stringargs[]){ inta[][]=newint[4][]; intj=0; for(j=0;j<4;j++){ a[j]=newint[j+1]; } for(inti=0;i<4;i++){ for(j=0;j<a[i].length;j++){ a[i][j]=i+j; System.out.print(a[i][j]+"\t"); } System.out.println("\n"); } }}2.5不變字符串:String類(約27min)字符的兩種表示形式String類的特點:1、在程序中可以不用new運算符,java編譯器也能從String類生成一個對象StringC=“ILoveChina”;StringC=newString(“ILoveChina”);StringC=newString();2、可以把字符數組作為參數生成一個串char[]charray={'c','h','i','n','e','s','e'};Strings=newString(charray);3、可以把字符串的一部分作為參數char[]charray={'c','h','i','n','e','s','e'};Strings=newString(charray,2,3);4、JDK1.1后還允許用字符串數組的方式來生成字符串對象String[]s=newString[]{"chinese","english"};String[]s={"chinese","english"};5、當給定一個字節數組時,String類提供了初始化字符串的構造方法String(byteascii[]);String(byteascii[],intstartIndex,intnumChars);

2.5.1字符串長度publicintlength():返回字符串的字符個數2.5.2查找字符串1、publiccharcharAt(intindex):返回字符串中index位置上的字符,其中index值的范圍是0~length-12、一次提取多個字符publicvoidgetChars(intsrcbegin,intend,charbuf[],intdstbegin)srcbegin為要提取的第一個字符在源串中的位置end為要提取的最后一個字符在源串中的位置字符數組buf[]存放目的字符串dstbegin為提取的字符串在目的串中的起始位置3.toCharArray()提取整個字符串放入字符數組arr[]使用此方法前要先建立字符數組arr[]4.返回字符在字符串中的位置publicintindexOf(intch)

publiclastIndexOf(intch)

返回字符ch在字符串中出現的第一個和最后一個的位置

publicintindexOf(Stringstr)

publicintlastIndexOf(Stringstr)

返回子串str中第一個字符在字符串中出現的第一個和最后一個的位置

publicintindexOf(intch,intfromIndex)

publiclastIndexOf(inch,intfromIndex)

返回字符ch在字符串中位置fromIndex以后出現的第一個和最后一個的位置

publicintindexOf(Stringstr,intfromIndex)publicintlastIndexOf(Stringstr,intfromIndex)

返回子串str中的第一個字符在字符串中位置fromIndex后出現的第一個和最后一個的位置。

2.5.3字符串比較(約35min)equals()與==的比較equals()比較字符串對象中的字符==比較兩個對象的引用,看他們是否引用相同的實例publicintcompareTo(StringanotherString)比較兩個字符串,返回整型值比較字符串的大小用字典順序被比較字符串對象小于、等于或大于anotherString,則返回小于、等于或大于0例:二分查找在一個排好序的字符串數組中查找字符串S2.5.4子串publicStringsubString(intbeginIndex);publicStringsubString(intbeginIndex,intendIndex);

用來得到字符串中指定范圍內的子串。

publicStringconcat(Stringstr);

用來將當前字符串對象與給定字符串str連接起來。2.5.5修改字符串publicStringtoLowerCase();

把串中所有的字符變成小寫。publicStringtoUpperCase();

把串中所有的字符變成大寫。

publicStringreplace(charoldChar,charnewChar);

用來把串中出現的所有特定字符替換成指定字符以生成新串。

三、小結(約3min)this引用多維數組不變字符串:String類四、作業(約2min)上機練習1:構造一個9行9列的乘法表上機練習2:輸出楊輝三角課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題子類、繼承和多態教學目的與要求:掌握super的使用掌握子類的定義和繼承的有關方法掌握方法和構造的方法的重載教學重點:super的使用,方法和構造的方法的重載教學難點:super的使用,方法和構造的方法的重載作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第5周一、引入(約3min)以“從類擴展出子類,子類繼承父類,從而實現代碼重用和多態,這是面向對象程序設計的兩大支柱。”為切入點引入新課。二、教學進程設計第3章子類、繼承和多態對象的分類:(約27min)用戶接口對象控制對象應用邏輯對象存儲對象3.1子類和繼承class類名A[extends父類名B][implements接口名]{[變量聲明];[方法聲明];}缺省extends子句,則類A為java.lang.Object的子類子類可以繼承父類的訪問權限為public,protected等的成員變量和方法,不能繼承private的成員和方法3.1.1成員變量的隱藏和方法重寫類的兩種可重用技術方法重寫方法重載成員變量隱藏和方法重寫的情況子類的成員變量和父類同名:super子類的方法和父類方法相同:重寫例:成員變量隱藏和方法重寫例:局部變量的作用域classVariable{ intx=0,y=0,z=0; voidinit(intx,inty){ this.x=x; this.y=y; intz=5; System.out.println("***ininit***"); System.out.println("x="+x+""+"y="+y+""+"z="+z); } } classTestVariable{ publicstaticvoidmain(Stringargs[]){ Variablev=newVariable(); System.out.println("***beforeinit***"); System.out.println("x="+v.x+""+"y="+v.y+""+"z="+v.z); v.init(20,30); System.out.println("***afterinit***"); System.out.println("x="+v.x+""+"y="+v.y+""+"z="+v.z); } }3.1.2super引用(約30min)super使用的三種情況:(1)用來訪問父類被隱藏的成員變量:super.成員變量;(2)用來調用父類中被重寫的方法:super.方法名([參數列表]);(3)用來調用父類的構造方法:super([參數列表]);例:super用法注:super在所有的子類非static方法中都可以用如果一個子類還有祖先類,super指父類而不是祖先類3.1.3繼承Java只允許單一繼承所有的類都是Object類的子類或子類的子類C++允許多重繼承3.1.4方法重載與方法重寫方法重載:方法有相同的名字,不同的參數特征目的:增加方法的應用范圍方法重寫:方法有相同的名字,相同的參數特征目的:改寫父類的某個程序3.2運行時多態(約35min)多態(polymorphism):指凡是父類合法的地方子類也合法。運行時多態的兩條規則:對子類的一個實例,如果子類重寫了父類的方法,則運行時系統就調用了子類的方法如果子類繼承了父類的方法(未被重寫),則運行時系統就仍調用父類的方法例:多態classCar{ intCar_color; intCar_door; intspeed; publicvoidpush_break(){ speed=0; System.out.println("InsideCar'spush_break()method"); } publicadd_oil(){ }}classTrash_CarextendsCar{ doubleamount; publicfill_trash(){ } publicvoidpush_break(){ speed=speed-10; System.out.println("InsideTrash_Car'spush_break()method"); }}classDemoCar{ publicstaticvoidmain(Stringargs[]){ Caracar=newTrash_Car(); acar.push_break(); }}3.3重載構造方法RectangleMyRect1=newRectangle();RectangleMyRect2=newRectangle(5,10);RectangleMyRect3=newRectangle(5,10,15,20);在有多個構造方法的情況下,一個構造方法可以調用另一個構造方法publicDrawingBoard(){ this("DRAWINGBOARD");}publicDrawingBoard(Stringtitle){ setTitle(title); setResizable(false); setBackground(Color.white);}三、小結(約3min)子類和繼承運行時多態重載構造方法四、作業(約2min)掌握super的使用什么是方法的重載和方法的覆蓋,二者有何區別?課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題繼承和抽象類教學目的與要求:掌握super與this的區別掌握抽象方法和抽象類的定義及使用方法教學重點:super與this的區別抽象方法和抽象類的定義及使用方法教學難點:super與this的區別作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第5周一、引入(約3min)以“回顧上節課的內容,方法的重載”為切入點,引入新課內容。二、教學進程設計3.4繼承和構造方法(約37min)1、父類的構造方法是不能被其他子類繼承的2、無效構造方法3、如果我們定義一個類的構造方法,它不顯式包含調用父類的構造方法,那么java編譯器將添加一個super()作為該構造方法的第一條語句例:車輛類的定義4、子類構造方法的規則如果一個類有一個父類,此父類不是祖先類Object,那么該類的構造方法應當顯式調用父類的構造方法3.5用this和super調用其他構造方法構造方法與方法體有其特殊性:在構造方法體中可以調用這個類或其父類中的另一個構造方法,但這個調用必須是方法體中的第一條語句。構造方法不允許通過方法名直接調用,需要使用this和super。構造方法一般表示:{ [this([參數列表1]);] [super([參數列表2]);] 方法體其他語句塊}例:顯式調用構造方法classFooextendsBar{ inta; Foo(inta){ this.a=a; } Foo(){ this(42); }}classFooSubextendsFoo{ intb; FooSub(intb){ super(13); this.b=b; }}調用構造方法時遵循的四項原則:當一個類創建對象時,可以調用此類的父類的構造方法如果一個類的構造方法中第一條語句沒有用super來調用父類的構造方法,編譯器默認添加super(),若無匹配的方法,則出錯。如果這個類的構造方法第一條語句是用this來調用另一個構造方法,則java不再默認這個構造方法調用父類的構造方法用this調用時,若被調用的構造又調用父類的構造方法而沒有super語句,java默認它含有super語句例:如何調用構造方法3.6抽象類和抽象方法(約25min)抽象類:把所有的一類事物的共同特點抽象出來,概括成這類事物的抽象概念抽象類是特別為了子類繼承而設計的,是所有子類設定的公共元素抽象類不能被實例化成對象,只能作為其他類的超類抽象方法指那些類中進行了定義但又不在該類中提供實現的特殊方法,這種方法必須由后繼的類提供抽象方法的實現細節抽象類的定義格式:抽象方法格式:abstract返回類型抽象方法名([參數列表]);抽象方法必須在后繼類中實現注意:不是所有方法都可以聲明為抽象的下面的方法不能聲明為抽象的私有(private)方法靜態(static)方法三、小結(約3min)繼承和構造方法用this和super調用其他構造方法抽象類和抽象方法四、作業:什么是抽象類?(約2min)課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題第4章接口、內部類和包教學目的與要求:掌握接口的定義掌握接口的應用教學重點:接口的定義和使用教學難點:如何通過接口實現java的多重繼承作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第6周PAGE一、引入(約3min)以“接口是程序之間的一個約定或合同,在接口中的方法都是抽象方法。”為切入點引入新課。二、教學進程設計(約30min)4.1接口4.1.1接口與實現接口的類聲明接口[public]interface接口[extends父接口]{[public][static][final]數據類型成員變量=常量值;[public][abstract]返回值類型成員方法[(參數列表)];}例如,publicinterfacePlane1 //平面圖形接口{publicabstractdoublearea(); //計算面積}2.聲明實現接口的類接口聲明中的方法全部都是抽象的,這些方法要靠使用接口的類去實現[修飾符]class類[extends父類][implements接口列表]例如,publicclassRectangle2implementsPlaneGraphics23.接口的作用接口提供方法聲明與方法實現相分離的機制,使多個類之間表現出共同的行為能力。接口中聲明的抽象方法約定了多個類共用的方法聲明,每個實現接口的類可以根據自身的實際情況,給出抽象方法的具體實現,顯然不同的類可以有不同的方法實現。例4.1圖形接口與實現圖形接口的類【例4.1】圖形接口與實現圖形接口的類。設計平面圖形接口PlaneGraphics2。publicinterfacePlaneGraphics2//平面圖形接口,都是public{publicabstractdoublearea();//計算面積publicabstractdoubleperimeter();//計算周長publicabstractvoidprint();}設計長方形類Rectangle2,實現平面圖形接口。覆蓋接口中的三個抽象方法publicdoublearea()//計算長方形面積,覆蓋接口中的抽象方法{returnthis.width*this.length;}publicdoubleperimeter()//計算長方形周長,覆蓋接口中的抽象方法{return(this.width+this.length)*2;}publicvoidprint(){if(this.length==this.width)System.out.print("一個正方形,邊長為"+this.length);elseSystem.out.print("一個長方形,長度為"+this.length+",寬度為"+this.width);System.out.println(",面積為"+this.area()+",周長為"+this.perimeter());}定義主方法publicstaticvoidmain(Stringargs[]){Rectangle2r1=newRectangle2(10,20);r1.print();r1=newRectangle2(10);r1.print();}}4.接口的特點接口及接口中成員的訪問權限都是public接口中的成員方法都是公有的、抽象的實例成員方法接口中的所有抽象方法必須全部被實現接口的類覆蓋接口中的成員變量都是常量接口不能被實例化接口是引用數據類型4.1.2用接口實現多重繼承一個類可以繼承一個父類并實現多個接口圖4.2繼承機制【例4.2】長方體類繼承長方形類并實現立體圖形接口。2.接口的繼承與抽象類一樣,接口也具有繼承性,一個接口允許被聲明為繼承一個已存在的父接口。擴展接口和接口的多重繼承一個接口可以擴展多個接口,繼承他們所有的屬性問題:接口中有重名的方法(1)方法重名:不同參數:重載,都存在僅返回類型不同:無法實現的錯誤兩個方法完全相同:保留一個(2)常量重名:都保留,使用原來的接口名作為前綴2.接口的繼承例如:publicinterfaceSolidGraphics1extendsPlaneGraphics2{ publicabstractdoublevolume();}3.接口與抽象類的區別相同點:兩者都包含抽象方法。兩者都不能被實例化。兩者都是引用數據類型。不同點:抽象類約定多個子類之間共同使用的方法;接口約定多個互不相關類之間共同使用的方法。抽象類與子類之間采用單重繼承機制;一個類實現多個接口則實現了多重繼承的功能。抽象類及其類中成員具有與普通類一樣的訪問權限;接口的訪問權限有public和默認兩種,接口中成員的訪問權限均是public。抽象類中可以包含非抽象方法,也可以聲明構造方法;接口中的方法全部是抽象方法,不能聲明構造方法。抽象類中可以聲明成員變量,子類可以對該成員變量賦值;接口中只能聲明常量。4.Java用接口實現多重繼承比C++多重繼承的優越之處圖4.6Java單重繼承時執行父類或祖先類中的方法三、小結(約3min)4.1.1接口與實現接口的類4.1.2用接口實現多重繼承四、作業(約2min)一個類怎樣才能繼承多個類的實現方法?課時授課計劃授課日期月日 星期月日 星期月日 星期月日 星期月日 星期班級網絡15-1基本課題實例成員和類成員、接口教學目的與要求:掌握包的定義及應用掌握javaAPI基礎教學重點:包的定義及應用教學難點:各種JAVA包的應用作業及參考書:Java2程序設計實用教程教具:多媒體課堂類型:講授教學過程:見下頁2016-2017學年第2學期第7周一、引入(約3min)以“接口是程序之間的一個約定或合同,在接口中的方法都是抽象方法。”為切入點引入新課。二、教學進程設計(約30min)4.2內部類類和類之間除了繼承關系,還存在嵌套關系,即一個類可以聲明包含另一個類,被包含的類稱為內部類,包含內部類的類稱為外部類,此時內部類成為外部類的成員。4.2內部類聲明內部類publicclassLine //直線類,外部類{protectedPointp1,p2;//直線的起點和終點protectedclassPoint//點類,內部類{protectedintx,y; //內部類的成員變量protectedPoint(intx,inty)//內部類的構造方法{this.x=x;this.y=y;}}}2.內部類特性內部類的類特性內部類不能與外部類同名。內部類具有封裝性。內部類具有繼承性。內部類具有抽象性。內部類的成員特性使用點運算符“.”引用內部類。例如:Line.Point內部類具有4種類中成員的訪問權限。內部類具有靜態特性。4.3包(約37min)4.3.1包的概念4.3.2創建、聲明和導入包4.3.1包的概念什么是包從邏輯概念看,包(package)是類的集合,一個包中包含多個類;從存儲概念看,包是類的組織方式,一個包對應一個文件夾,一個文件夾中包含多個字節碼文件;包與類的關系,就像文件夾與文件的關系一樣。包中還可以再有子包,稱為包等級,子包對應一個子文件夾。4.3.2創建、聲明和導入包創建與包同名的文件夾setclasspath=.;C:\ProgramFiles\Java\jdk1.5.0\lib;C:\myjava聲明類所在的包package包1{.包2};例如,packagemypackage; //聲明所在的包publicinterfacePlaneGraphics2引用包中的類包1{.包2}.類|接口4.3.2創建、聲明和導入包導入包import包1{.包2}.類|接口|*;importmypackage.PlaneGraphics2;默認包路徑:當前文件夾包之間類及類中成員的訪問權限包中非內部的類或接口只有2種訪問權限:public和缺省。在類中成員的4種訪問權限中,public和private權限與包無關,而protected和缺省權限與包有關。4.3.2創建、聲明和導入包Java源程序結構package //聲明包,0~1句import //導入包,0~多句publicclass或interface //聲明公有類或接口,0~1句,文件名與該名相同class //聲明默認類,0~多句interface //聲明接口,0~多句包可以壓縮成文件jar.exe在命令提示符下輸入jar查看以下信息4.4JavaAPI基礎(約25min)4.4.1Java提供的包概述4.4.2java.lang語言包4.4.3java.util實用包4.4.1Java提供的包概述Java的常用包java.lang:基本的java核心類,如Object,String,StringBuffer,System,Math,Thread。所有java程序都隱含地引用這個包。java.io:提供所有用于輸入輸出的類,如:RandomAccessFile,File,Reader,Writerjava.util:包含很多實用類。Date,Calendar,Stack,Vector,H:支持網絡的類。ServerSocker,URLjava.awt:用來建立圖形界面的類,如:Window,Menu,Button,Font,Graphics;還包含java.awt.image和java.awt.peer包java.applet:執行小應用程序的類,Appletsun.tools.debug:調試工具包,

溫馨提示

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

評論

0/150

提交評論