《面向?qū)ο蟪绦蛟O(shè)計(Java)》_第1頁
《面向?qū)ο蟪绦蛟O(shè)計(Java)》_第2頁
《面向?qū)ο蟪绦蛟O(shè)計(Java)》_第3頁
《面向?qū)ο蟪绦蛟O(shè)計(Java)》_第4頁
《面向?qū)ο蟪绦蛟O(shè)計(Java)》_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課時授課計劃

2016-2017學(xué)年第二學(xué)期第1周

2月21

授課日期

星期二

網(wǎng)絡(luò)15-1

班級

基本課題第1章Java概述

教學(xué)目的與要求:

了解Java的發(fā)展史和java語言的特點

掌握java虛擬機的工作原理

掌握java與C,C++的區(qū)別和聯(lián)系

教學(xué)重點:java虛擬機的工作原理

java與C,C++的區(qū)別和聯(lián)系

教學(xué)難點:java虛擬機的工作原理

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

一、引入(約3min)

以“至今世界上已有2000-4000種程序設(shè)計語言,Java是有史以來第一個被工業(yè)界和學(xué)術(shù)界同時

認可的語言”為切入點引入新課。

二、教學(xué)進程設(shè)計

第1章Java和Web(約27min)

重點和難點:

■Java的發(fā)展史

■Java語言的特點

■Java虛擬機(難點)

■Java與C,C++的聯(lián)系(難點)

1.1計算機和萬維網(wǎng)

■萬維網(wǎng)(World-WideWebi11WWW):20世紀90年代

■WWW的雛形最初由瑞士高能物理研究中心實驗室的TimeBerners-Lee在1989年提出

■1990年10月正式命名為World-WideWeb

■WWW包括:瀏覽器和服務(wù)器

■當(dāng)時統(tǒng)計:服務(wù)器的個數(shù)每3~6個月翻一番

在經(jīng)歷了以大型機為代表的集中計算模式和以PC機為代表的分散計算模式之后,互聯(lián)網(wǎng)的出

現(xiàn)使得計算模式進入了網(wǎng)絡(luò)計算時代。

問題:大家想一想,在PC下用windows編寫的程序能夠不做修改就直接拿到UNIX系統(tǒng)上運

行嗎?

網(wǎng)絡(luò)計算模式的特點

■計算機是異構(gòu)的

■代碼可以通過網(wǎng)絡(luò)在各種計算機上進行遷移

1.2程序設(shè)計語言和Java

一、程序設(shè)計語言

■Java是一種徹底的面向?qū)ο笸ㄓ贸绦蛟O(shè)計語言

■程序設(shè)計語言分類:

■機器語言:不同的CPU有它自己的機器語言

■匯編語言

■高級語言

高級語言

■FORTRAN:1950年末

■COBOL:1960年初

■BASIC

■Pascal

■C:1970年AT&T貝爾實驗室開發(fā)

■C++:1980年初

至今世界上己有2000-4(X)0種程序設(shè)計語言

Java吸取了50年來程序設(shè)計語言研究的各種新思想以及正反經(jīng)驗,形成了一種好的程序設(shè)計風(fēng)

格。

■Java是有史以來第一個被工業(yè)界和學(xué)術(shù)界同時認可的語言

■微軟公司總裁比爾蓋茨先生在經(jīng)過研究后認為“java語言是長時間以來最卓越的程序設(shè)計語言”。

二、java語言的產(chǎn)生

“有心栽花花不成,無心插柳柳成蔭”

■Sun公司以經(jīng)營工作站聞名

■Sun成立了由JamesGosling負責(zé)的Green小組開發(fā)消費產(chǎn)品,減輕來自PC的壓力

■語言的選擇,設(shè)計一種以C++為基礎(chǔ)的語言

■1993年WWW由字符界面發(fā)展到圖形界面

■1994年BillJoe將Java用在因特網(wǎng)的開發(fā)中,做出免費使用Java的決定

三、Java的命名(約30min)

■Java原名叫Oak(橡樹)

■java是印尼的一個小島,盛產(chǎn)咖啡,而程序員往往喜歡喝咖啡,因此取名為java語言??磥?,目

前java這杯咖啡已經(jīng)飄香在世界各地。

四、Java的特點

■Applet

■Application

(1)面向?qū)ο?/p>

封裝性、多態(tài)性、繼承性、動態(tài)鏈接

(2)工作原理

WriteOnce,RunAnywhere

(3)安全問題

Java是在網(wǎng)絡(luò)環(huán)境下使用的語言

一個安全的網(wǎng)絡(luò)至少要防止以下幾種破壞的可能性:

■毀滅系統(tǒng)資源

■消耗系統(tǒng)資源

■挖掘系統(tǒng)或個人機密

■騷擾正常工作的進行

(4)多線程

■Java提供現(xiàn)成的類Thread,只要繼承這個類就可以編寫多線程的程序。

1.3Java與C,C++(約35min)

Java=

“CH,,_“復(fù)雜性和奇異性,,+“安全性和可移植性,,

1.全局變量

■在類中定義公共、靜態(tài)變量來實現(xiàn)一個全局變量

classGlobarVariable{

publicstaticglobal_var;

2、指針

■Java對指針進行了完全的控制,java沒有顯示的指針類型,所有引用都通過使用隱式引用,而不

是通過指針來完成的

3、數(shù)組

■java中的數(shù)組是通過類來實現(xiàn)的

■數(shù)組的邊界要嚴格檢查

對象數(shù)組:

MyObjectarrayOfObj[l=newMyObject[10]

把實際的MyObject對象添加到數(shù)組中

for(inti;i<arrayOfObj.length;i++){

arrayOfObj[i]=newMyObject();

)

4、字符串

■C中字符串是以一個空字符(\0)結(jié)尾的字符數(shù)組

■Java中字符串是個封裝的對象

5、內(nèi)存管理

■在C語言中,程序員使用庫函數(shù)malloc()和free。來分配和釋放內(nèi)存,C++語言中則是運算符new

和delete。再次釋放已經(jīng)釋放的內(nèi)存塊或者釋放未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰,而忘記釋放

不再使用的內(nèi)存塊也會逐漸耗盡系統(tǒng)資源。

■在java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對象,通過運算符new分配內(nèi)存并得到對象的使用權(quán)。無用內(nèi)存

回收機制(運行時間的垃圾收集器)保證了系統(tǒng)資源的完整,避免了內(nèi)存管理不周而引起的系統(tǒng)崩

潰。

6、數(shù)據(jù)類型

■在C/C++語言中,不同的平臺上,編譯器對簡單的數(shù)據(jù)類型如int、float等分別分配不同的字節(jié)數(shù)。

例如:int在IBMPC上為16位,在VAX-11上就為32位,導(dǎo)致了代碼數(shù)據(jù)的不可移植。

■在java中,對數(shù)據(jù)類型的位數(shù)分配總是固定的,而不管是在任何的計算機平臺上。因此就保證了

java數(shù)據(jù)的平臺無關(guān)性和可移植性。

7、運算符

■優(yōu)先級和結(jié)合率作用與C一樣

■New結(jié)合型比點符號高

■Java中沒有重載運算符

8、控制流

■Java中返回布爾值

■C中返回整數(shù)值

■Java中不支持goto語句,同過例外處理

9、頭文件

■在C/C++語言中使用頭文件聲明類的原型和全局變量及庫函數(shù)等,在大的系統(tǒng)中,維護這些頭文

件是非常困難的。

■java不支持頭文件,類成員的類型和訪問權(quán)限都封裝在一個類中,運行時系統(tǒng)對訪問進行控制,防

止非法的訪問。同時,java中用import語句與其它類進行通信,以便訪問其它類的對象。

10、參數(shù)

■Java不支持函數(shù)的變長參數(shù)表機制,所有方法必須有特定的參數(shù)個數(shù)

■Java中argv[0]對應(yīng)C中的argvfl]

三、小結(jié)(約2min)

■計算機和萬維網(wǎng)

■程序設(shè)計語言和Java

■Java與C-C++

四、作業(yè)(約3min)

課后習(xí)題1、2

課時授課計劃

2016-2017學(xué)年第2學(xué)期第1周

月夕/月3/月0^^

月月

授課日期

/^期期

期期/s期

網(wǎng)絡(luò)15-1

班級

基本課題第1章Java概述

教學(xué)目的與要求:

掌握Java的應(yīng)用程序和運行方式

掌握java的開發(fā)環(huán)境

教學(xué)重點:Java的應(yīng)用程序和運行方式

Java的開發(fā)環(huán)境

教學(xué)難點:Java的應(yīng)用程序和運行方式

作業(yè)及參考書

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

一、引入(約3min)

以“至今世界上已有2000-4000種程序設(shè)計語言,Java是有史以來第一個被工業(yè)界和學(xué)術(shù)界同時

認可的語言”為切入點引入新課。

二、教學(xué)進程設(shè)計

1.2Java應(yīng)用程序及其運行方式(約37min)

1.2.1Application和Applet程序

1.2.2Java的體系結(jié)構(gòu)

1.2.1Application和Applet程序

1.Application

2.Applet

■<HTML>

■<HEAD>

■<TITLE>my</TITLE>

■</HEAD>

■<BODY>

■<appletcode=MFirstApplet.classnwidth=300height=190>

■</applet>

■</BODY>

■</HTML>

Drawing方法小結(jié):

■drawRect(x,y,w,h)

■drawString(<4text,,,x,y)

小應(yīng)用與應(yīng)用程序

1>Applet

■不同點:小應(yīng)用沒有main()方法的引導(dǎo),必須嵌入到HTML文件中,用支持Java的瀏覽器來運行

■Java對小應(yīng)用施加了限制

java應(yīng)用程序結(jié)構(gòu)

小應(yīng)用的結(jié)構(gòu)

1.2.2Java的體系結(jié)構(gòu)

1.3Java開發(fā)運行環(huán)境

■1.3.1JDK的安裝與設(shè)置

■1.3.2運行Java程序

■1.3.3JCreator簡介

1.3.1JDK的安裝與設(shè)置(約30min)

■安裝機器要求

■硬件:CPUPII以上,64MB內(nèi)存,100MB硬盤空間。

■軟件:Windows98/NT/2000/XP,IE5.0

■程序清單

■JDK

■幫助文檔

■安裝JDK

■設(shè)置環(huán)境變量

■JAVA_HOME

■CLASSPATH

■PATH

■安裝JDK幫助文檔

設(shè)置環(huán)境變量

■JAVA_H0ME=C:\j2sdkl.4.2(安裝路徑)

■CLASSPATH=C:\j2sdkl,4.2\lib\dt.jar;C:\j2sdkl,4.2\bin;C:\j2sdkl.4.2\lib\tools.jar;.;

■PATH=C:\j2sdkl,4.2\bin;

安裝sdk

JDK目錄結(jié)構(gòu)

以j2sdkl.4.2版本為例,其目錄結(jié)構(gòu)如下描述。

JDKWbinW包括編譯器、解釋器和一些基本工具。

JDKWdemoW包括一些簡單的示例。

JDKWincludeW是Win32子目錄,包括本地方法文件。

JDK\\jre\\是Java程序運行環(huán)境的根目錄。

JDKWjreWbin包括平臺運行時的工具和類庫的可執(zhí)行文件和動態(tài)鏈接庫文件。

JDK\\jre\\lib包括Java運行環(huán)境的代碼庫,默認安裝文件等。

JDKWlib包括類庫文件。

JDK\src.zip源代碼壓縮文件。

java'bin的目錄下包含義下主要文件:

javac:Java編譯器,用來將java程序編譯成

Bytecode

java:Java解釋器,執(zhí)行已經(jīng)轉(zhuǎn)換成Bytecode的

java應(yīng)用程序.

jdb:Java調(diào)試器,用來調(diào)試java程序

javap:反編譯,將類文件還原回方法和變量.

javadoc:文檔生成器,創(chuàng)建HTML文件

叩pletviewer:Java解釋器,用來解釋已經(jīng)轉(zhuǎn)換成

Bytecode的java小應(yīng)用程序.

安裝sdk

1.3.2運行Java程序(約25min)

■Java程序運行流程

1.3.2運行Java程序

■JDK提供的編譯與運行命令

■編譯

■運行Application應(yīng)用程序

■運行Applet應(yīng)用程序

1.3.3JCreator簡介

JCreator提供Java程序的編輯、編譯和運行的集成開發(fā)環(huán)境。

三、小結(jié)(約2min)

■計算機和萬維網(wǎng)

■程序設(shè)計語言和Java

■Java與C.C++

四、作業(yè)(約3min)

實驗1熟悉Java程序的編輯、編譯和運行過程

■編輯、編譯、運行以下程序,說出程序的功能。改變變量n的初值,觀察運行結(jié)果有何變化。

課時授課計劃

2016-2017學(xué)年第2學(xué)期第2周

月夕/月3/月0^^

月日月

授課日期

/^期期

期期/s期

網(wǎng)絡(luò)15-1

班級

基本課題第2章Java語言基礎(chǔ)

教學(xué)目的與要求:

掌握標識符和關(guān)鍵字的定義

了解java的基本數(shù)據(jù)類型

了解常量、變量及塊的定義

教學(xué)重點:java的基本數(shù)據(jù)類型

常量、變量及塊的定義

教學(xué)難點:java的基本數(shù)據(jù)類型

常量、變量及塊的定義

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

(―)引入(約3min)

以“任何程序設(shè)計語言,都是由語言規(guī)范和一系列開發(fā)庫組成的?!睘榍腥朦c引入新課內(nèi)容。

(-)教學(xué)進程設(shè)計

第2章Java語言基礎(chǔ)(約30min)

2.1標識符和關(guān)鍵字

一、標識符組成:

■字母

■數(shù)字

■下劃線(_)

■美元($)

注:第一個字符必須為字母、下劃線或美元符號

二、保留字

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區(qū)分大小寫字母

■\u03co是4的Unicode字符,可以用作標識符

三、Smalltalk命名規(guī)則:

(1)每個名字可以由幾個單詞連接而成

(2)對于類名,每個單詞的開頭字母大寫

(3)方法名和變量名,第一個字母不大寫

(4)常量應(yīng)該用全部大寫的標識符定義

(5)包名全部小寫

Java采用16位的Unicode字符集作為字符的內(nèi)部表示形式

■每個字符用16位二進制表示

■支持65536個不同字符

■其中21000個用于漢、日、朝、希臘、羅馬、阿拉伯?dāng)?shù)學(xué)符號等

■前256個值包含ASCII碼中的表示

2.2基本數(shù)據(jù)類型(約27min)

2.2.1整數(shù)類型

2.2.2浮點數(shù)類型

2.2.3布爾類型

■布爾型數(shù)據(jù)只有兩個值true和false,且它們不對應(yīng)于任何整數(shù)值。布爾型變量的定義如:

booleanb=true;

2.2.4字符類型

2.3常量

2.3.1布爾常量

■OTruefalse

2.3.2整型常量

?十進制整數(shù)

如123,—456,0

?八進制整數(shù):以0開頭

■0123表示十進制數(shù)是:

■—011表示十進制數(shù)是:

■O十六進制整數(shù):以O(shè)x或0X開頭

■0x123表示十進制數(shù)是:

■一0X12表示十進制數(shù)是:

■無論采用什么進制,在輸出到控制分時、系統(tǒng)都會自動轉(zhuǎn)化為十進制。

■Long型:在數(shù)值后面多了一個“L”,不能省略。

2.3.3字符常量

■字符常量:用一對單引號括起來的單個字符

■范圍:

■直接用拉丁字母表示

■轉(zhuǎn)義字符

■要表示字符對應(yīng)的八進制或Unicode碼

轉(zhuǎn)義字符

2.3.4字符串常量(約35min)

■用直雙引號括起來的一串字符

■標志字符串開始和結(jié)束的直雙引號必須在源代碼的同一行上

■連接運算符(+)

■“IloveChina!"+11Howdoyoudo?”的結(jié)果是:“IloveChina!Howdoyoudo?”

2.3.5浮點常量

O十進制數(shù)形式

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

?科學(xué)計數(shù)法形式

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

?float型的值,必須在數(shù)字后加f或F,如1.23f。

?double型的值,可在數(shù)字后加d或D,如:

doublex=22.2D;

?不帶任何后綴的浮點數(shù)值為double型

■常量:用保留字final來實現(xiàn)

finaltypeSpecifiervarName=value[,varName[=value]...];

如:finalintNUM=100;

2.4變量

2.4.1分類

變量聲明的格式:

■[修飾符]類型標識符;

2.4.2注意的問題

■增加byte的理由:不同計算機對于多字節(jié)數(shù)據(jù)的存儲方式是不同的

■Java中沒有無符號整數(shù),且規(guī)定了整型和浮點型數(shù)據(jù)所占的內(nèi)存字節(jié)數(shù),確保了安全性、魯棒性和

平臺無關(guān)性

■Java中的字符型數(shù)據(jù)是16位無符號型數(shù)據(jù),它表示Unicode集

字符型數(shù)據(jù)可以轉(zhuǎn)換為整型數(shù)來操作:

2.5表達式,語句和塊

基本語句:

■聲明語句inti;

■表達式語句A+=B;

塊:用{}括起來的語句組成塊

變量的作用域:從它的定義開始到最小的包含其定義塊的結(jié)束

classExpress{

publicstaticvoidmain(Stringargs[]){

inta=4;

a+=4;

intb;

b=a+2;

System.out.println(a+

(三)小結(jié)(約3min)

.標識符和關(guān)鍵字

2..基本數(shù)據(jù)類型

3.常量

4.變量

5.表達式,語句和塊

(四)作業(yè)(約2min)

課后習(xí)題第1題。

課時授課計劃

2016-2017學(xué)年第2學(xué)期第3周

月上/月夕/月3/月0^^

授課日期

/^期期

期期/s期

網(wǎng)絡(luò)15-1

班級

基本課題運算符、流控制語句

教學(xué)目的與要求:

掌握運算符的使用

了解java流控制語句的語法

教學(xué)重點:運算符的使用和java流控制語句的語法

教學(xué)難點:類型轉(zhuǎn)換

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

(一)引入(約3min)

以“回顧上節(jié)課的語法基礎(chǔ)”為切入點引入新課內(nèi)容。

(-)教學(xué)進程設(shè)計

2.6運算符(約37min)

2.6.1賦值運算符

finalinlA=29;

2.6.2賦值語句

1、基本數(shù)據(jù)聲明和賦值

2、多個數(shù)值數(shù)據(jù)在內(nèi)存分配

2.6.3算術(shù)運算符

1、雙目運算符

注意:

1、運算符作用于整型操作數(shù)時,任一操作數(shù)為long,結(jié)果為long,否則為整型。

2L+5=7L;

3L*4=12L:

5/2=2;

2、運算符作用于浮點數(shù)時,任一操作數(shù)為雙精度時,結(jié)果也是雙精度,否則為單精度

3、取模運算即可以用于整型數(shù),也可以用于浮點型數(shù)

37.2%10=7.2

2.6.4關(guān)系運算符

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);

■測試Test

■Test=true,貝!|a=b;否貝!]a=c

4.6.8廣義賦值運算符

■變量op=表達式;

■變量=變量op表達式;

例:A+=B;

A=A+B;

2.6.9對象運算符(約30min)

■instanceof用來測試一個對象是否屬于某個指定類或其子類的實例。

■返回true或false

roster[0]instanceofUndergraduateStudent;

event.getSource()instanceofButton;

booleanbool=MyObjectinstanceofTextField;

2.7運算符的優(yōu)先級

2.8類型轉(zhuǎn)換

2.8.1自動類型轉(zhuǎn)換

■小定義域類型的值自動轉(zhuǎn)換到大定義域類型的值

2.8.2強制轉(zhuǎn)換

■大定義域轉(zhuǎn)換到小定義域類型

■在定義域不直接可比的類型之間轉(zhuǎn)換

■(數(shù)據(jù)類型)變量名或表達式;

2.9注釋

插入方式:

■以//開頭,直到此行末尾,稱單行注釋。

■以/*開頭,直到*/結(jié)束,稱多行注釋。

■以/**開頭,以*/結(jié)束

2.10流控制語句

2.10.1if-else語句

■if(布爾表達式)語句1

■if(布爾表達式)

語句I;

else

語句2;

2.10.2switch語句

語法格式:

■switch(expression))

casevalue1:statement1;

break;

casevalue2:statement?;

break;

casevalueN:statemendN;

break;

[default:defaultstatement;]

)

2.10.3循環(huán)語句

1、for循環(huán)

語法格式:

for(initialization;termination;iteration)

body;

)

例:冒泡排序法

2.While循環(huán)語句(約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.4轉(zhuǎn)移語句

1、break語句

終止當(dāng)前循環(huán)體語句,使程序轉(zhuǎn)移到下一個語句

例:

if(check(i)){

for(intj=O;j<l0;j++){

if(j>i)break;

Break停止更外層的塊

2.continue語句

■跳過循環(huán)體中continue語句以后剩下的部分,再從循環(huán)體頭開始

■格式:

continue;

也可以用continue跳轉(zhuǎn)到指明的外層循環(huán)中,這時的格式為

continueouterLable;

例:檢查intArray中是否有1~6數(shù)字

3、return語句

■return語句從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,并從緊跟該語句的下一條語句繼續(xù)程

序的執(zhí)行。

■返回語句有兩種格式:

returnexpression;

return;

注:return語句通常用在一個方法體的最后,否則會產(chǎn)生編譯錯誤,除非用在if-else語句中

(三)小結(jié)(約3min)

1.運算符

2.運算符優(yōu)先級

3.類型轉(zhuǎn)換

4.注釋

5.流控制語句

(四)作業(yè)

課后習(xí)題第8、12題。(約2min)

課時授課計劃

2016-2017學(xué)年第2學(xué)期第3周

月夕/

月H.X月3/月月0^^

授課日期

/^期

期期/s期期

網(wǎng)絡(luò)15-1

班級

基本課題數(shù)組的定義和使用

教學(xué)目的與要求:

掌握基本數(shù)據(jù)類型的數(shù)組的定義和使用方法

掌握對象數(shù)組的定義和使用方法

了解把數(shù)組傳送給方法的注意事項

教學(xué)重點:

基本數(shù)據(jù)類型的數(shù)組和對象數(shù)組的定義和使用方法

教學(xué)難點:

對象數(shù)組的定義和使用方法

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

一、引入(約3min)

以“許多數(shù)據(jù)結(jié)構(gòu)是編程中不可缺少的組成部分。Java把它們封裝成專門的數(shù)據(jù)類供用戶使用。

本章將一一加以介紹”為切入點引入新課。

二、教學(xué)進程設(shè)計

第6章數(shù)組和字符串(約27min)

6.1數(shù)組

6.1.1基本數(shù)據(jù)類型的數(shù)組

1、一維數(shù)組的定義

typearrayName[];

type|]arrayName;

分配內(nèi)存空間

1)類型口數(shù)組名[]=new類型[數(shù)組長度];

2)類型口數(shù)組名=new類型[數(shù)組長度];

3)類型口數(shù)組名;〃類型數(shù)組名[];

數(shù)組名=new類型[數(shù)組長度]:

2.一維數(shù)組的引用

■arrayName[index|

注:下標從零開始,直到數(shù)組長度-1

例:

publicclassindex{

publicstaticvoidmain(Stringargs[]){

inti;

inl[]A=newint[5];

for(i=0;i<5;i++)

A[i]=i;

for(i=A.length-l;i>=0;i-)

System.out.println("A["+i+"]="+A[i]);

)

)

3.一維數(shù)組的初始化

在定義數(shù)組的同時進行初始化

intA[]={0,1,2,3,4}

charspring[]寸春?眠?不;覺,曉,處,處,間,啼,鳥};

arraycopy()方法

char[]writer=newchar[3];

System.arraycopy(spring,2,writer,0,3);

6.1.2對象數(shù)組(約30min)

classRabbit{

finalcharEYECOLOR='R';

finalcharFURCOLOR=,W';

Stringname;

intage;

charsex;

intspeed;

)

定義方法

publicStringgelName。;缺省值:未給定

publicintgetAge();缺省值:0

publicchargetSex();缺省值:U(F、M>U)

publicintgetSpeed。;缺省值:0

publicvoidsetName(Stringname);

publicvoidsetAge(intage);

publicvoidsetSex(charsex);

publicvoidsetSpeed(intspeed);

定義tuzi對象

Rabbittuzi;

lozi=newRabbit();

tozi.setName("Ms.bunnyn);

tozi.setAge(3);

tozi.setSex(F);

tozi.setSpeed(lOO);

System.out.println(',Name:',+tozi.getName());

System.out.println(nAge:n4-tozi.getAge());

System.out.printlnC'Sexz^+tozi.getSexO);

System.out.println("Speed:M+tozi.getSpeed());

創(chuàng)建一個對象數(shù)組:

■Rabbit[]rabbit;

■Rabbit=newRabbit[10|;

給對象賦值

rabbit[O].setName("Ms.bunnyu);

rabbit[0].setAge(3);

rabbit[O].setSex('F');

rabbit[OJ.setSpeed(l00);

1.計算rabbit對象數(shù)組中兔子的平均年齡(約35min)

floatsum=O,averageAge;

for(inti=O;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[O].getAge();

for(inti=l;i<rabbit.length;i+4-){

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(',OIdest:,'+nameOfOldest+,'is',+max+"yearsold.”);

System.out.println("Youngest:',+nameOfYoungest+,'is"+min4-,'yearsold.");

利用索引查找

使用rabbit對象的變量

■Rabbityoungest,oldest;

■youngest=oldest=rabbit[OJ;

■for(inti=1;i<rabbit.length;i++){

■if(rabbit[i].getAge()<youngest.getAge()){

■youngest=rabbit[i];

■)

■elseif(rabbit[il.getAge()>oldest.getAge()){

■oldest=rabbit[i];

■}}

■System.out.println(,'Oldest:,,+oldest.getName()

+"is”+oklest.getAgeO+"yearsold.");

■System.out.println("Youngest:n4-youngest.getName()

4-"is"+youngest.getAge()+',yearsold.*1);

3.刪除對象數(shù)組中的對象操作

方法:

■把要刪除的對象數(shù)組中的元素置上null

■先把要刪除的對象數(shù)組的那個對象換到數(shù)組最末位置上,然后把最末位置上置位null

6.2把數(shù)組傳送給方法

■publicintsearchMax(float[]number){

■intIdxOfMax=0;

■for(inti=l;i<number.length;i++){

■if(number[i]>number[IdxOIMax]){

■IdxOfMax=i

■returnIdxOfMax;)

調(diào)用該方法

■float[]arrl,arr2;

■intmax1=searchMax(arr1);

■intmax2=searchMax(arr2);

■System.out.printlnC^axvalueinArrayOneis");

■System.out.println(arrl[maxl]+natposition"+max1);

■System.out.println(HMaxvalueinArrayTwoisM);

■System.out.println(arr2[max2]4-,'atposition"+max2);

規(guī)則:

■當(dāng)一個數(shù)組被傳送到一個方法時,僅僅是它的引用被傳送,而該數(shù)組的拷貝在這個方法中并不創(chuàng)

建。

三、小結(jié)(約3min)

1.基本數(shù)據(jù)類型的數(shù)組

2.對象數(shù)組

3.把數(shù)組傳送給方法

四、作業(yè)(約2min)

上機練習(xí):計算輸入一行文本中的元音字母的個數(shù)。

課時授課計劃

2016-2017學(xué)年第2學(xué)期第4周

月夕/

月H.X月3/月月0^^

授課日期

/^期

期期/s期期

網(wǎng)絡(luò)15-1

班級

基本課題多維數(shù)組、字符串

教學(xué)目的與要求:

掌握this關(guān)鍵字的使用

掌握多維數(shù)組的定義和使用方法

掌握不變字符串String類的使用

教學(xué)重點:

this關(guān)鍵字的使用、多維數(shù)組的定義和使用、String類的使用

教學(xué)難點:

this和多維數(shù)組的定義及使用方法

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

一、引入(約3min)

以“回顧一維數(shù)組的定義及使用方法,本節(jié)介紹java中多維數(shù)組的定義及引用”為切入點引入

新課。

二、教學(xué)進程設(shè)計

2.3this引用(約30min)

2.3.1this引用的第一種場合

目的:解決名字沖突問題

例6-4標識符speed引用了什么?

2.3.2this引用的第二種場合

把當(dāng)前對象的名字(引用)作為參數(shù)傳送給它調(diào)用的另一個對象的方法

2.3.3this引用的第三種場合

從相同類的一個構(gòu)造方法調(diào)用另一個構(gòu)造方法

注意:

1.this引用專門用來指明當(dāng)前對象的成員變量或當(dāng)前對象的方法

2.使用this可以提高程序的可讀性

3.this引用只對實例變量(對象的成員變量),不能對局部變量。

2.4多維數(shù)組

2.4.1聲明和創(chuàng)建二維數(shù)組

(1)聲明

typearrayName[][];

type||[JarrayName;

(2)創(chuàng)建

arrayName=newtype[arrayLength1][arrayLength2];

多維數(shù)組分配內(nèi)存空間的方法

1、直接分配

multiplicationTable=newint[9][9];

2.4.2二維數(shù)組的引用

arrayName[indexl][index2]

例:multiplicationTable[2][3];

2.4.3二維數(shù)組的初始化

1、直接對每個元素進行賦值

int[][]mulliplicationTable=newint[9][9];

2、在定義數(shù)組的同時進行初始化

int[JlJmultiplicationTable={{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語言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不是連續(xù)分配的,所以不要求二維數(shù)組

每一維的大小相同。

注意:

創(chuàng)建數(shù)組時,數(shù)組的最前面的一維或兒維必須指定元素個數(shù),只有后面的方括號中可以不指定個數(shù)

classMyArray{

publicstaticvoidmain(Stringargs[]){

inta[][]=newint[4][];

intj=0;

for(j=0;j<4;j++){

a[j]=newint[j+l];

)

for(inti=0;i<4;i++){

for(j=0;j<a[i].length;j4-+){

a[i][j]=i+j;

System.out.print(a[i][j]+M\t");

)

System.out.println("\n");

2.5不變字符串:String類(約27min)

字符的兩種表示形式

String類的特點:

1、在程序中可以不用new運算符,java編譯器也能從String類生成一個對象

■StringC="ILoveChina^^;

■StringC=newString("ILoveChina^^);

■StringC=newString();

2、可以把字符數(shù)組作為參數(shù)生成一個串

■char[]charray={,c,;h,;i',,n,;e,,'s7e,};

■Strings=newString(charray);

3、可以把字符串的一部分作為參數(shù)

■char[]charray={;

■Strings=newString(charray,2,3);

4、JDK1.1后還允許用字符串?dāng)?shù)組的方式來生成字符串對象

String[]s=newString[]{"chinese'V'english"};

String[]s={"Chinese”Jenglish"};

5、當(dāng)給定一個字節(jié)數(shù)組時,String類提供了初始化字符串的構(gòu)造方法

String(byteascii[]);

String(byteascii[],intstartindex,intnumChars);

2.5.1字符串長度

■publicinilength。:返回字符串的字符個數(shù)

2.5.2查找字符串

1、publiccharcharAt(intindex):返回字符串中index位置上的字符,其中index值的范圍是

O~length-1

2、一次提取多個字符

publicvoidgetChars(intsrcbegin,intend,charbuf[],intdstbegin)

■srcbegin為要提取的第一個字符在源串中的位置

■end為要提取的最后一個字符在源串中的位置

■字符數(shù)組buf[]存放目的字符串

■ds由egin為提取的字符串在目的串中的起始位置

3.toCharArray()

■提取整個字符串放入字符數(shù)組arr[]

■使用此方法前要先建立字符數(shù)組arr[]

4.返回字符在字符串中的位置

■publicintindexOf(intch)

publiclastIndexOf(intch)

返回字符ch在字符串中出現(xiàn)的第一個和最后一個的位置

publicintindexOf(Stringstr)

publicintlastIndexOf(Stringstr)

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

publicintindexOf(intch,inifromlndex)

publiclastIndexOf(inch,intfromlndex)

返回字符ch在字符串中位置fromlndex以后出現(xiàn)的第一個和最后一個的位置

publicintindexOf(Stringstr,intfromlndex)

publicintlastIndexOf(Stringstr,intfromlndex)

返回子串str中的第一個字符在字符串中位置fromlndex后出現(xiàn)的第一個和最后一個的位置。

2.5.3字符串比較(約35min)

equals。與==的比較

equals。比較字符串對象中的字符

==比較兩個對象的引用,看他們是否引用相同的實例

publicinicompareTo(SlringanotherString)

比較兩個字符串,返回整型值

比較字符串的大小用字典順序

被比較字符串對象小于、等于或大于anotherString,則返回小于、等于或大于0

例:二分查找

■在一個排好序的字符串?dāng)?shù)組中查找字符串S

2.5.4子串

■publicStringsubString(intbeginlndex);

publicStringsubString(intbeginlndex,intendindex);

用來得到字符串中指定范圍內(nèi)的子串。

publicStringconcat(Stringstr);

用來將當(dāng)前字符串對象與給定字符串str連接起來。

2.5.5修改字符串

publicStringtoLowerCase();

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

publicStringtoUpperCase();

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

publicStringreplace(charoldChar,charnewChar);

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

三、小結(jié)(約3min)

1.this引用

2.多維數(shù)組

3.不變字符串:String類

四、作業(yè)(約2min)

上機練習(xí)1:構(gòu)造一個9行9列的乘法表

上機練習(xí)2:輸出楊輝三角

課時授課計劃

2016-2017學(xué)年第2學(xué)期第5周

月夕/

月H.X月3/月月0^^

授課日期

/^期

期期/s期期

網(wǎng)絡(luò)15-1

班級

基本課題子類、繼承和多態(tài)

教學(xué)目的與要求:

掌握super的使用

掌握子類的定義和繼承的有關(guān)方法

掌握方法和構(gòu)造的方法的重載

教學(xué)重點:

s叩er的使用,方法和構(gòu)造的方法的重載

教學(xué)難點:

super的使用,方法和構(gòu)造的方法的重載

作業(yè)及參考書:

Java2程序設(shè)計實用教程

教具:多媒體

課堂類型:講授

教學(xué)過程:見下頁

一、引入(約3min)

以“從類擴展出子類,子類繼承父類,從而實現(xiàn)代碼重用和多態(tài),這是面向?qū)ο蟪绦蛟O(shè)計的兩

大支柱?!睘榍腥朦c引入新課。

二、教學(xué)進程設(shè)計

第3章子類、繼承和多態(tài)

對象的分類:(約27min)

1.用戶接口對象

2.控制對象

3.應(yīng)用邏輯對象

4.存儲對象

3.1子類和繼承

class類名A[extends父類名B][implements接口名]{

[變量聲明];

[方法聲明];

)

缺省extends子句,則類A為java.lang.Object的子類

子類可以繼承父類的訪問權(quán)限為public,protected等的成員變量和方法,不能繼承private的成員和方

3.1.1成員變量的隱藏和方法重寫

1.類的兩種可重用技術(shù)

2.方法重寫

3.方法重載

4.成員變量隱藏和方法重寫的情況

5.子類的成員變量和父類同名:super

6.子類的方法和父類方法相同:重寫

例:成員變量隱藏和方法重寫

例:局部變量的作用域

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(Slringargs[]){

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)用來調(diào)用父類中被重寫的方法:

super.方法名([參數(shù)列表]);

(3)用來調(diào)用父類的構(gòu)造方法:

super([參數(shù)列表]):

例:super用法

注:

1.super在所有的子類非static方法中都可以用

2.如果一個子類還有祖先類,super指父類而不是祖先類

3.1.3繼承

1.Java只允許單一繼承

2.所有的類都是Object類的子類或子類的子類

3.C++允許多重繼承

3.1.4方法重載與方法重寫

方法重載:

■方法有相同的名字,不同的參數(shù)特征

■目的:增加方法的應(yīng)用范圍

方法重寫:

■方法有相同的名字,相同的參數(shù)特征

■目的:改寫父類的某個程序

3.2運行時多態(tài)(約35min)

多態(tài)(polymorphism):指凡是父類合法的地方子類也合法。

運行時多態(tài)的兩條規(guī)則:

1.對子類的一個實例,如果子類重寫了父類的方法,則運行時系統(tǒng)就調(diào)用了子類的方法

2.如果子類繼承了父類的方法(未被重寫),則運行時系統(tǒng)就仍調(diào)用父類的方法

例:多態(tài)

classCar{

intCar_color;

intCar_door;

intspeed;

publicvoidpush_break(){

speed=0;

System.out.println(nInsideCar'spush_break()methodH);

)

publicadd_oil(){}}

classTrash_CarextendsCar{

doubleamount;

publicfill_trash(){}

publicvoidpush_break(){

speed=speed-10;

System.out.println(nInsideTrash_Car'spush_break()method");

})

classDemoCar{

publicstaticvoidmain(Stringargs[]){

Caracar=newTrash_Car();

acar.push_break();

})

3.3重載構(gòu)造方法

RectangleMyRectl=newRectangle();

RectangleMyR

溫馨提示

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

最新文檔

評論

0/150

提交評論