版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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¡ªWWW):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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制造业供应链协同与效率提升制度
- 2025年水质采样试题及答案
- 2025-2030针织家纺产业政府战略管理与区域发展战略研究咨询报告
- 2025年事业单位招聘考试艺术设计类综合专业能力测试试卷及答案
- 2025年事业单位教师招聘考试生物学科专业知识模拟试题试卷及答案
- 2025新企业人力资源管理师核心考点题库及答案
- 2026冷链物流温控技术升级投资回报率分析
- 2026冬季低温环境下药用饲料保存稳定性改良技术专题
- 2025年出租车行业政府购买服务报告
- 2026农产品冷链物流行业市场供需整合及投资评估规划分析研究报告
- 村镇建设科培训课件
- 药物作用机制-洞察及研究
- 室内概念方案汇报
- 物业营销溢价方案(3篇)
- 2025年浙江省中考科学试题卷(含答案解析)
- 太原市城市供热收费管理办法
- 白癜风诊疗共识(2025版)解读
- T/CHES 89-2022河湖生态流量保障实施方案编制技术导则
- 青岛2025年自主招生考试物理试卷试题及答案详解
- 四川省旅游景区精细化管理服务质量提升规范 DB51 -T 2878-2022
- 2025年河南工业贸易职业学院单招职业技能考试题库及答案1套
评论
0/150
提交评论