《面向对象程序设计(Java)》_第1页
《面向对象程序设计(Java)》_第2页
《面向对象程序设计(Java)》_第3页
《面向对象程序设计(Java)》_第4页
《面向对象程序设计(Java)》_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课时授课计划

2016-2017学年第二学期第1周

2月21

授课日期

星期二

网络15-1

班级

基本课题第1章Java概述

教学目的与要求:

了解Java的发展史和java语言的特点

掌握java虚拟机的工作原理

掌握java与C,C++的区别和联系

教学重点:java虚拟机的工作原理

java与C,C++的区别和联系

教学难点:java虚拟机的工作原理

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

一、引入(约3min)

以“至今世界上已有2000-4000种程序设计语言,Java是有史以来第一个被工业界和学术界同时

认可的语言”为切入点引入新课。

二、教学进程设计

第1章Java和Web(约27min)

重点和难点:

■Java的发展史

■Java语言的特点

■Java虚拟机(难点)

■Java与C,C++的联系(难点)

1.1计算机和万维网

■万维网(World-WideWebi11WWW):20世纪90年代

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

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

■WWW包括:浏览器和服务器

■当时统计:服务器的个数每3~6个月翻一番

在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出

现使得计算模式进入了网络计算时代。

问题:大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运

行吗?

网络计算模式的特点

■计算机是异构的

■代码可以通过网络在各种计算机上进行迁移

1.2程序设计语言和Java

一、程序设计语言

■Java是一种彻底的面向对象通用程序设计语言

■程序设计语言分类:

■机器语言:不同的CPU有它自己的机器语言

■汇编语言

■高级语言

高级语言

■FORTRAN:1950年末

■COBOL:1960年初

■BASIC

■Pascal

■C:1970年AT&T贝尔实验室开发

■C++:1980年初

至今世界上己有2000-4(X)0种程序设计语言

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的特点

■Applet

■Application

(1)面向对象

封装性、多态性、继承性、动态链接

(2)工作原理

WriteOnce,RunAnywhere

(3)安全问题

Java是在网络环境下使用的语言

一个安全的网络至少要防止以下几种破坏的可能性:

■毁灭系统资源

■消耗系统资源

■挖掘系统或个人机密

■骚扰正常工作的进行

(4)多线程

■Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。

1.3Java与C,C++(约35min)

Java=

“CH,,_“复杂性和奇异性,,+“安全性和可移植性,,

1.全局变量

■在类中定义公共、静态变量来实现一个全局变量

classGlobarVariable{

publicstaticglobal_var;

2、指针

■Java对指针进行了完全的控制,java没有显示的指针类型,所有引用都通过使用隐式引用,而不

是通过指针来完成的

3、数组

■java中的数组是通过类来实现的

■数组的边界要严格检查

对象数组:

MyObjectarrayOfObj[l=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中的argvfl]

三、小结(约2min)

■计算机和万维网

■程序设计语言和Java

■Java与C-C++

四、作业(约3min)

课后习题1、2

课时授课计划

2016-2017学年第2学期第1周

月夕/月3/月0^^

月月

授课日期

/^期期

期期/s期

网络15-1

班级

基本课题第1章Java概述

教学目的与要求:

掌握Java的应用程序和运行方式

掌握java的开发环境

教学重点:Java的应用程序和运行方式

Java的开发环境

教学难点:Java的应用程序和运行方式

作业及参考书

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

一、引入(约3min)

以“至今世界上已有2000-4000种程序设计语言,Java是有史以来第一个被工业界和学术界同时

认可的语言”为切入点引入新课。

二、教学进程设计

1.2Java应用程序及其运行方式(约37min)

1.2.1Application和Applet程序

1.2.2Java的体系结构

1.2.1Application和Applet程序

1.Application

2.Applet

■<HTML>

■<HEAD>

■<TITLE>my</TITLE>

■</HEAD>

■<BODY>

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

■</applet>

■</BODY>

■</HTML>

Drawing方法小结:

■drawRect(x,y,w,h)

■drawString(<4text,,,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_HOME

■CLASSPATH

■PATH

■安装JDK帮助文档

设置环境变量

■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目录结构

以j2sdkl.4.2版本为例,其目录结构如下描述。

JDKWbinW包括编译器、解释器和一些基本工具。

JDKWdemoW包括一些简单的示例。

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

JDK\\jre\\是Java程序运行环境的根目录。

JDKWjreWbin包括平台运行时的工具和类库的可执行文件和动态链接库文件。

JDK\\jre\\lib包括Java运行环境的代码库,默认安装文件等。

JDKWlib包括类库文件。

JDK\src.zip源代码压缩文件。

java'bin的目录下包含义下主要文件:

javac:Java编译器,用来将java程序编译成

Bytecode

java:Java解释器,执行已经转换成Bytecode的

java应用程序.

jdb:Java调试器,用来调试java程序

javap:反编译,将类文件还原回方法和变量.

javadoc:文档生成器,创建HTML文件

叩pletviewer:Java解释器,用来解释已经转换成

Bytecode的java小应用程序.

安装sdk

1.3.2运行Java程序(约25min)

■Java程序运行流程

1.3.2运行Java程序

■JDK提供的编译与运行命令

■编译

■运行Application应用程序

■运行Applet应用程序

1.3.3JCreator简介

JCreator提供Java程序的编辑、编译和运行的集成开发环境。

三、小结(约2min)

■计算机和万维网

■程序设计语言和Java

■Java与C.C++

四、作业(约3min)

实验1熟悉Java程序的编辑、编译和运行过程

■编辑、编译、运行以下程序,说出程序的功能。改变变量n的初值,观察运行结果有何变化。

课时授课计划

2016-2017学年第2学期第2周

月夕/月3/月0^^

月日月

授课日期

/^期期

期期/s期

网络15-1

班级

基本课题第2章Java语言基础

教学目的与要求:

掌握标识符和关键字的定义

了解java的基本数据类型

了解常量、变量及块的定义

教学重点:java的基本数据类型

常量、变量及块的定义

教学难点:java的基本数据类型

常量、变量及块的定义

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

(―)引入(约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区分大小写字母

■\u03co是4的Unicode字符,可以用作标识符

三、Smalltalk命名规则:

(1)每个名字可以由几个单词连接而成

(2)对于类名,每个单词的开头字母大写

(3)方法名和变量名,第一个字母不大写

(4)常量应该用全部大写的标识符定义

(5)包名全部小写

Java采用16位的Unicode字符集作为字符的内部表示形式

■每个字符用16位二进制表示

■支持65536个不同字符

■其中21000个用于汉、日、朝、希腊、罗马、阿拉伯数学符号等

■前256个值包含ASCII码中的表示

2.2基本数据类型(约27min)

2.2.1整数类型

2.2.2浮点数类型

2.2.3布尔类型

■布尔型数据只有两个值true和false,且它们不对应于任何整数值。布尔型变量的定义如:

booleanb=true;

2.2.4字符类型

2.3常量

2.3.1布尔常量

■OTruefalse

2.3.2整型常量

◊十进制整数

如123,—456,0

◊八进制整数:以0开头

■0123表示十进制数是:

■—011表示十进制数是:

■O十六进制整数:以Ox或0X开头

■0x123表示十进制数是:

■一0X12表示十进制数是:

■无论采用什么进制,在输出到控制分时、系统都会自动转化为十进制。

■Long型:在数值后面多了一个“L”,不能省略。

2.3.3字符常量

■字符常量:用一对单引号括起来的单个字符

■范围:

■直接用拉丁字母表示

■转义字符

■要表示字符对应的八进制或Unicode码

转义字符

2.3.4字符串常量(约35min)

■用直双引号括起来的一串字符

■标志字符串开始和结束的直双引号必须在源代码的同一行上

■连接运算符(+)

■“IloveChina!"+11Howdoyoudo?”的结果是:“IloveChina!Howdoyoudo?”

2.3.5浮点常量

O十进制数形式

由数字和小数点组成,且必须有小数点,如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+

(三)小结(约3min)

.标识符和关键字

2..基本数据类型

3.常量

4.变量

5.表达式,语句和块

(四)作业(约2min)

课后习题第1题。

课时授课计划

2016-2017学年第2学期第3周

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

授课日期

/^期期

期期/s期

网络15-1

班级

基本课题运算符、流控制语句

教学目的与要求:

掌握运算符的使用

了解java流控制语句的语法

教学重点:运算符的使用和java流控制语句的语法

教学难点:类型转换

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

(一)引入(约3min)

以“回顾上节课的语法基础”为切入点引入新课内容。

(-)教学进程设计

2.6运算符(约37min)

2.6.1赋值运算符

finalinlA=29;

2.6.2赋值语句

1、基本数据声明和赋值

2、多个数值数据在内存分配

2.6.3算术运算符

1、双目运算符

注意:

1、运算符作用于整型操作数时,任一操作数为long,结果为long,否则为整型。

2L+5=7L;

3L*4=12L:

5/2=2;

2、运算符作用于浮点数时,任一操作数为双精度时,结果也是双精度,否则为单精度

3、取模运算即可以用于整型数,也可以用于浮点型数

37.2%10=7.2

2.6.4关系运算符

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运算符的优先级

2.8类型转换

2.8.1自动类型转换

■小定义域类型的值自动转换到大定义域类型的值

2.8.2强制转换

■大定义域转换到小定义域类型

■在定义域不直接可比的类型之间转换

■(数据类型)变量名或表达式;

2.9注释

插入方式:

■以//开头,直到此行末尾,称单行注释。

■以/*开头,直到*/结束,称多行注释。

■以/**开头,以*/结束

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循环语句

1、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.4转移语句

1、break语句

终止当前循环体语句,使程序转移到下一个语句

例:

if(check(i)){

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

if(j>i)break;

Break停止更外层的块

2.continue语句

■跳过循环体中continue语句以后剩下的部分,再从循环体头开始

■格式:

continue;

也可以用continue跳转到指明的外层循环中,这时的格式为

continueouterLable;

例:检查intArray中是否有1~6数字

3、return语句

■return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程

序的执行。

■返回语句有两种格式:

returnexpression;

return;

注:return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中

(三)小结(约3min)

1.运算符

2.运算符优先级

3.类型转换

4.注释

5.流控制语句

(四)作业

课后习题第8、12题。(约2min)

课时授课计划

2016-2017学年第2学期第3周

月夕/

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

授课日期

/^期

期期/s期期

网络15-1

班级

基本课题数组的定义和使用

教学目的与要求:

掌握基本数据类型的数组的定义和使用方法

掌握对象数组的定义和使用方法

了解把数组传送给方法的注意事项

教学重点:

基本数据类型的数组和对象数组的定义和使用方法

教学难点:

对象数组的定义和使用方法

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

一、引入(约3min)

以“许多数据结构是编程中不可缺少的组成部分。Java把它们封装成专门的数据类供用户使用。

本章将一一加以介绍”为切入点引入新课。

二、教学进程设计

第6章数组和字符串(约27min)

6.1数组

6.1.1基本数据类型的数组

1、一维数组的定义

typearrayName[];

type|]arrayName;

分配内存空间

1)类型口数组名[]=new类型[数组长度];

2)类型口数组名=new类型[数组长度];

3)类型口数组名;〃类型数组名[];

数组名=new类型[数组长度]:

2.一维数组的引用

■arrayName[index|

注:下标从零开始,直到数组长度-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.一维数组的初始化

在定义数组的同时进行初始化

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;

)

定义方法

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

创建一个对象数组:

■Rabbit[]rabbit;

■Rabbit=newRabbit[10|;

给对象赋值

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

rabbit[0].setAge(3);

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

rabbit[OJ.setSpeed(l00);

1.计算rabbit对象数组中兔子的平均年龄(约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.删除对象数组中的对象操作

方法:

■把要删除的对象数组中的元素置上null

■先把要删除的对象数组的那个对象换到数组最末位置上,然后把最末位置上置位null

6.2把数组传送给方法

■publicintsearchMax(float[]number){

■intIdxOfMax=0;

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

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

■IdxOfMax=i

■returnIdxOfMax;)

调用该方法

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

规则:

■当一个数组被传送到一个方法时,仅仅是它的引用被传送,而该数组的拷贝在这个方法中并不创

建。

三、小结(约3min)

1.基本数据类型的数组

2.对象数组

3.把数组传送给方法

四、作业(约2min)

上机练习:计算输入一行文本中的元音字母的个数。

课时授课计划

2016-2017学年第2学期第4周

月夕/

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

授课日期

/^期

期期/s期期

网络15-1

班级

基本课题多维数组、字符串

教学目的与要求:

掌握this关键字的使用

掌握多维数组的定义和使用方法

掌握不变字符串String类的使用

教学重点:

this关键字的使用、多维数组的定义和使用、String类的使用

教学难点:

this和多维数组的定义及使用方法

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

一、引入(约3min)

以“回顾一维数组的定义及使用方法,本节介绍java中多维数组的定义及引用”为切入点引入

新课。

二、教学进程设计

2.3this引用(约30min)

2.3.1this引用的第一种场合

目的:解决名字冲突问题

例6-4标识符speed引用了什么?

2.3.2this引用的第二种场合

把当前对象的名字(引用)作为参数传送给它调用的另一个对象的方法

2.3.3this引用的第三种场合

从相同类的一个构造方法调用另一个构造方法

注意:

1.this引用专门用来指明当前对象的成员变量或当前对象的方法

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

3.this引用只对实例变量(对象的成员变量),不能对局部变量。

2.4多维数组

2.4.1声明和创建二维数组

(1)声明

typearrayName[][];

type||[JarrayName;

(2)创建

arrayName=newtype[arrayLength1][arrayLength2];

多维数组分配内存空间的方法

1、直接分配

multiplicationTable=newint[9][9];

2.4.2二维数组的引用

arrayName[indexl][index2]

例:multiplicationTable[2][3];

2.4.3二维数组的初始化

1、直接对每个元素进行赋值

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

2、在定义数组的同时进行初始化

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语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组

每一维的大小相同。

注意:

创建数组时,数组的最前面的一维或儿维必须指定元素个数,只有后面的方括号中可以不指定个数

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、可以把字符数组作为参数生成一个串

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

■Strings=newString(charray);

3、可以把字符串的一部分作为参数

■char[]charray={;

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

4、JDK1.1后还允许用字符串数组的方式来生成字符串对象

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

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

5、当给定一个字节数组时,String类提供了初始化字符串的构造方法

String(byteascii[]);

String(byteascii[],intstartindex,intnumChars);

2.5.1字符串长度

■publicinilength。:返回字符串的字符个数

2.5.2查找字符串

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

O~length-1

2、一次提取多个字符

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

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

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

■字符数组buf[]存放目的字符串

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

3.toCharArray()

■提取整个字符串放入字符数组arr[]

■使用此方法前要先建立字符数组arr[]

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

■publicintindexOf(intch)

publiclastIndexOf(intch)

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

publicintindexOf(Stringstr)

publicintlastIndexOf(Stringstr)

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

publicintindexOf(intch,inifromlndex)

publiclastIndexOf(inch,intfromlndex)

返回字符ch在字符串中位置fromlndex以后出现的第一个和最后一个的位置

publicintindexOf(Stringstr,intfromlndex)

publicintlastIndexOf(Stringstr,intfromlndex)

返回子串str中的第一个字符在字符串中位置fromlndex后出现的第一个和最后一个的位置。

2.5.3字符串比较(约35min)

equals。与==的比较

equals。比较字符串对象中的字符

==比较两个对象的引用,看他们是否引用相同的实例

publicinicompareTo(SlringanotherString)

比较两个字符串,返回整型值

比较字符串的大小用字典顺序

被比较字符串对象小于、等于或大于anotherString,则返回小于、等于或大于0

例:二分查找

■在一个排好序的字符串数组中查找字符串S

2.5.4子串

■publicStringsubString(intbeginlndex);

publicStringsubString(intbeginlndex,intendindex);

用来得到字符串中指定范围内的子串。

publicStringconcat(Stringstr);

用来将当前字符串对象与给定字符串str连接起来。

2.5.5修改字符串

publicStringtoLowerCase();

把串中所有的字符变成小写。

publicStringtoUpperCase();

把串中所有的字符变成大写。

publicStringreplace(charoldChar,charnewChar);

用来把串中出现的所有特定字符替换成指定字符以生成新串。

三、小结(约3min)

1.this引用

2.多维数组

3.不变字符串:String类

四、作业(约2min)

上机练习1:构造一个9行9列的乘法表

上机练习2:输出杨辉三角

课时授课计划

2016-2017学年第2学期第5周

月夕/

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

授课日期

/^期

期期/s期期

网络15-1

班级

基本课题子类、继承和多态

教学目的与要求:

掌握super的使用

掌握子类的定义和继承的有关方法

掌握方法和构造的方法的重载

教学重点:

s叩er的使用,方法和构造的方法的重载

教学难点:

super的使用,方法和构造的方法的重载

作业及参考书:

Java2程序设计实用教程

教具:多媒体

课堂类型:讲授

教学过程:见下页

一、引入(约3min)

以“从类扩展出子类,子类继承父类,从而实现代码重用和多态,这是面向对象程序设计的两

大支柱。”为切入点引入新课。

二、教学进程设计

第3章子类、继承和多态

对象的分类:(约27min)

1.用户接口对象

2.控制对象

3.应用逻辑对象

4.存储对象

3.1子类和继承

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

[变量声明];

[方法声明];

)

缺省extends子句,则类A为java.lang.Object的子类

子类可以继承父类的访问权限为public,protected等的成员变量和方法,不能继承private的成员和方

3.1.1成员变量的隐藏和方法重写

1.类的两种可重用技术

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)用来调用父类中被重写的方法:

super.方法名([参数列表]);

(3)用来调用父类的构造方法:

super([参数列表]):

例:super用法

注:

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

2.如果一个子类还有祖先类,super指父类而不是祖先类

3.1.3继承

1.Java只允许单一继承

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

3.C++允许多重继承

3.1.4方法重载与方法重写

方法重载:

■方法有相同的名字,不同的参数特征

■目的:增加方法的应用范围

方法重写:

■方法有相同的名字,相同的参数特征

■目的:改写父类的某个程序

3.2运行时多态(约35min)

多态(polymorphism):指凡是父类合法的地方子类也合法。

运行时多态的两条规则:

1.对子类的一个实例,如果子类重写了父类的方法,则运行时系统就调用了子类的方法

2.如果子类继承了父类的方法(未被重写),则运行时系统就仍调用父类的方法

例:多态

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重载构造方法

RectangleMyRectl=newRectangle();

RectangleMyR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论