Java程序设计经典实验教案.docx
《Java程序设计经典实验教案.docx》由会员分享,可在线阅读,更多相关《Java程序设计经典实验教案.docx(41页珍藏版)》请在冰豆网上搜索。
Java程序设计经典实验教案
实验教案(首页)
实验课程名称
Java语言程序设计
实验学时
36
实验课类别
1.验证性或基础性□2.综合性□3.设计性□4.创新性和研究型□
授课对象
年级:
2012级专业:
计算机科学与技术班级:
本科班
教材
和
主要参考资料
教材:
《Java语言程序设计(第2版)》,殷兆麟,范宝德,朱长征编著,高等教育出版社
参考书:
教参:
《Java语言程序设计教程(第5版)》,(美)H.M.Deitel/P.J.Deitel,清华大学出版社,2004年3月。
《Java程序设计基础》,杨绍方,科学出版社,2001年;
《Java大学简明教程—实例程序设计》,(美)戴特尔,电子工业出版社,2002年;
《Java技术教程(基础篇)》,王克宏,清华大学出版社,2002年。
教学目的和
教学要求
Java程序设计是计算机科学与技术专业的专业基础课,它是网络时代广泛使用的面向对象的编程语言,它具有可移植性、稳定性、安全性、多线程机制等众多优点,具有非常高的技术性能。
上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节正确理解和熟练掌握JAVA语言的基本知识和基本技能,培养面向对象的程序设计思想和程序设计方法及能力。
教学重点和
教学难点
Java面向对象编程
教学进程安排
课次
实验项目(实验内容)
学时
备注
1
安装Java平台并配置环境变量,编译、运行简单程序
2
2
Java数据类型、各种运算符的使用
三种基本流程、break、continue用法
4
3
数组、拷贝数组方法arraycopy、数组类Arrays
字符与字符类Character常用方法的使用,String、StringBuffer、StringBuilder常用方法
4
4
类和对象的创建、方法的使用
构造方法的重载,静态变量与方法
抽象类和抽象方法;最终类、最终方法
6
5
父类和子类编程,扩展类编程
建立包和接口,多态性
4
6
try和catch语句
throw和throws语句的使用,finally用法,自定义异常类
4
7
流输入输出
文件读写及随机访问
4
8
Applet程序的编辑与编译,代码嵌入,Applet运行
Applet生命周期,Applet的应用
4
9
多线程的两种常用的创建方法编程;多线程的各个状态的编程;多线程的同步编程
2
实验教案
课题(项目)名称:
安装Java平台并配置环境变量,编译、运行简单程序
计划学时:
2
实验类型:
1.验证性或基础性□2.综合性□3.设计性□4.创新性和研究型□
授课日期:
年月日
第周星期第节
【实验目的】
1.学习JDK的开安装和配置
2.学习Eclipse的安装和基本使用
3.练习编写基本的Java程序
【实验要求】
1.掌握JDK的安装和配置
2.掌握Eclipse的安装和基本使用
3.掌握Java程序编写的基本方法
4.理解Java程序编译和运行的基本过程
【实验内容与步骤】
1.JDK的安装及基本使用
(1)下载JDK的安装文件()
(2)按照安装软件提示进行安装
(3)配置path和classpath
变量名
变量值
说明
JAVA_HOME
C:
\j2sdk(假定JDK安装在该目录下)
JDK所在搜索路径
Path
C:
\j2sdk\bin
或%JAVA_HOME%\bin
Java实用程序的位置
CLASSPATH
.;c:
\j2sdk\lib\dt.jar;c:
\j2sdk\lib\tools.jar
或.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
说明类和包文件的搜索路径
(4)测试java,JDK安装是否成功的方法
在CMD中输入java空格或是javac空格或是java-version(显示的是JDK版本的信息)
(5)编写HelloWorld.java程序,编译并运行
2.Eclipse安装
(1)下载Eclipse
(2)解压安装
3.Eclipse使用
(1)设置工程区(选择自己的目录!
!
!
)
(2)建立项目Project****(****代表学号后4位)
(3)创建cn.pzhu.java.s****.exp1.HelloWorld类,并运行
4.简单程序编写
在包cn.pzhu.java.s****.exp1下创建
(1)编写下面“HelloWorld”程序。
publicclassHello{
publicstaticvoidmain(Stringargs[]){
System.out.println("这是一个简单的Java应用程序");
Studentstu=newStudent();
stu.speak("Wearestudents");
}
}
classStudent{
publicvoidspeak(Strings){
System.out.println(s);
}
}
(2)编写程序输出如下字符(StarDemo.java)
*
**
***
****
*****
【思考与练习】
1.尽管实际java程序开发都使用集成开发工具,但为什么首先要了解JDK?
2.了解,总结Eclipse中的快捷键
【ALT+/】:
此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。
【Ctrl+O】:
显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。
【Ctrl+/】:
快速添加注释,能为光标所在行或所选定行快速添加注释或取消注释,在调试的时候可能总会需要注释一些东西或取消注释,现在好了,不需要每行进行重复的注释。
【Ctrl+D】:
删除当前行,不用为删除一行而按那么多次的删除键。
【Ctrl+M】:
窗口最大化和还原,用户在窗口中进行操作时,总会觉得当前窗口小(尤其在编写代码时),现在好了,试试【Ctrl+M】快捷键。
查看和定位快捷键:
在程序中,迅速定位代码的位置,快速找到Bug的所在,是非常不容易的事,Eclipse提供了强大的查找功能,可以利用如下的快捷键帮助完成查找定位的工作。
【Ctrl+K】、【Ctrl++Shift+K】:
快速向下和向上查找选定的内容,从此不再需要用鼠标单击查找对话框了。
【Ctrl+Shift+T】:
查找工作空间(Workspace)构建路径中的可找到Java类文件,不要为找不到类而痛苦,而且可以使用“*”、“?
”等通配符。
【Ctrl+Shift+R】和【Ctrl+Shift+T】对应,查找工作空间(Workspace)中的所有文件(包括Java文件),也可以使用通配符。
【Ctrl+Shift+G】查找类、方法和属性的引用。
这是一个非常实用的快捷键,例如要修改引用某个方法的代码,可以通过【Ctrl+Shift+G】快捷键迅速定位所有引用此方法的位置。
【Ctrl+Shift+O】快速生成import,当从网上拷贝一段程序后,不知道如何import进所调用的类,试试【Ctrl+Shift+O】快捷键,一定会有惊喜。
【Ctrl+Shift+F】格式化代码,书写格式规范的代码是每一个程序员的必修之课,当看见某段代码极不顺眼时,选定后按【Ctrl+Shift+F】快捷键可以格式化这段代码,如果不选定代码则默认格式化当前文件(Java文件)。
【ALT+Shift+W】:
查找当前文件所在项目中的路径,可以快速定位浏览器视图的位置,如果想查找某个文件所在的包时,此快捷键非常有用(特别在比较大的项目中)。
【Ctrl+L】定位到当前编辑器的某一行,对非Java文件也有效。
【Alt+←】、【Alt+→】:
后退历史记录和前进历史记录,在跟踪代码时非常有用,用户可能查找了几个有关联的地方,但可能记不清楚了,可以通过这两个快捷键定位查找的顺序。
【F3】快速定位光标位置的某个类、方法和属性。
【F4】显示类的继承关系,并打开类继承视图。
【实验报告要求】
1.简述应用JDK运行环境配置和开发java程序的常用命令。
2.查找资料总结Eclipse常用的10个快捷键。
3.请建立一个工程文件和里面的java文件,存放在你自己指定的文件目录下。
并进行编译和执行。
写出这个过程。
实验教案
课题(项目)名称:
Java数据类型、各种运算符的使用
计划学时:
2
实验类型:
1.验证性或基础性□2.综合性□3.设计性□4.创新性和研究型□
授课日期:
年月日
第周星期第节
【实验目的】
1.熟悉基本数据类型;变量的命名规则;常量的表达。
2.掌握各种运算符、表达式;运算符的优先级。
3.熟悉数据类型的强制转换和自动转换。
【实验要求】
1.编写一个声明Java不同数据类型变量的程序。
2.编写一个关于变量的使用范围的程序。
3.掌握表达式的书写方法
【实验内容与步骤】
(一)声明不同数据类型的变量
1.编写声明不同数据类型变量的程序文件KY2_1.java,源代码如下。
publicclassKY2_1{
publicstaticvoidmain(Stringargs[]){
byteb=0x55;
shorts=0x55ff;
inti=1000000;
longl=0xffffL;
charc='a';
floatf=0.23F;
doubled=0.7E-3;
booleanB=true;
StringS="这是字符串类数据类型";
System.out.println("字节型变量b="+b);
System.out.println("短整型变量s="+s);
System.out.println("整型变量i="+i);
System.out.println("长整型变量l="+l);
System.out.println("字符型变量c="+c);
System.out.println("浮点型变量f="+f);
System.out.println("双精度变量d="+d);
System.out.println("布尔型变量B="+B);
System.out.println("字符串类对象S="+S);
}
}
2.编译并运行该程序
3.把程序的输出结果写在实验报告中。
如果不给上面程序中的变量赋初始值的话,看看该程序是否还能正确运行?
如果不可以,请指出为什么?
(二)了解变量的使用范围
1.建立KY2_2.java文件,通过本程序了解变量的使用范围,源代码如下。
publicclassKY2_2{
staticinti=10;
publicstaticvoidmain(Stringargs[]){
{
intk=10;
System.out.println("i="+i);
System.out.println("k="+k);
}
System.out.println("i="+i);
System.out.println("k="+k);
}
}
2.编译KY2_2.java
看看这个程序是否会出错?
为什么会出现编译错误,请在试验报告中给出理由!
3.修改上面的程序,让它能正确运行。
4.把修改后的源程序以及程序的输出结果写在实验报告中。
思考:
KY2_2.java程序说明了什么问题?
(三)分析表达式的运算顺序,用程序验证
1.分析表达式的运算顺序,用程序验证
(1)x=5+3*5/3-2;
(2)x=4%4+4*4-4/4;
(3)x=(2*4*(2+(4*2/
(2))-3))
2.设x=10,y=20,z=30;求布尔表达式的值并显示:
(1)x<10||x>10;
(2)
(2)x>y&&y>x;
(3)(x(4)z-y==x&&(y-z)==x;
(5)x<10&&x>10;
(6)x>y||y>x;
(7)!
(x(x+10<=20);
(8)(!
(x==y))&&(x!
=y)&&(x【实验报告要求】
请在实验报告中对本次实验内容进行总结。
实验教案
课题(项目)名称:
三种基本流程、break、continue用法
计划学时:
4
实验类型:
1.验证性或基础性□2.综合性□3.设计性□4.创新性和研究型□
授课日期:
年月日
第周星期第节
【实验目的】
1.理解Java程序的三种基本结构,即顺序结构、分支结构和循环结构。
2.掌握用于分支的if…else、switch…case语句。
3.掌握用于循环的for、while、do…while语句。
4.熟悉break、cotinue作用。
【实验要求】
1.掌握流程控制语句的使用
【实验内容与步骤】
(一)使用选择语句
输入并运行下面的程序,说明switch语句的使用方法。
(Page86页第5题)
程序代码如下:
……
1.将分析程序得到的结果与实际运行结果相比较,看是否一致。
若结果不一致,原因在哪里?
请在实验报告中解释为什么?
2.break语句在switch语句中起到了什么作用?
3.修改上面的程序,让它能正确运行。
把修改后的源程序以及程序的输出结果写在实验报告中。
(二)使用循环语句
1.请编写程序KY2_3.java,要求程序具有如下功能:
用三种循环语句实现输出10~50之间为3的倍数的数。
(1)编译KY2_3.java
(2)运行KY2_3.class
(3)把源程序写在实验报告中。
2.请编写程序KY2_4.java,要求程序具有如下功能:
输出1~100中的偶数,一行5个。
(1)编译KY2_4.java
(2)运行KY2_4.class
(3)把源程序写在实验报告中。
【实验报告要求】
请在实验报告中对本次实验内容进行总结。
实验教案
课题(项目)名称:
数组、拷贝数组方法arraycopy、数组类Arrays
计划学时:
2
实验类型:
1.验证性或基础性□2.综合性□3.设计性□4.创新性和研究型□
授课日期:
年月日
第周星期第节
【实验目的】
1.掌握数组的定义与访问
2.掌握拷贝数组方法arraycopy的使用
3.掌握数组类Arrays的使用
【实验要求】
1.编写使用数组解决实际问题的程序。
2.验证使用arraycopy方法的程序。
3.验证使用数组类的程序。
【实验内容与步骤】
(一)数组的应用
1.创建一个数组,功能如page78页第3-15题。
2.创建如下的二维数组,并遍历数组
12345
8abc
de
3.要求:
判断一个数组中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。
该题中如果需要判断数组中元素是否重复,则需要对数组中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。
实现思路:
假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。
把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。
则实现的代码如下:
int[]n={1,2,3,1,0};
booleanflag=true; //假设不重复
for(inti=0;i for(intj=i+1;j //如果相等,则重复
if(n[i]==n[j]){
flag=false;//设置标志变量为重复
break; //结束循环
}
}
}
//判断标志变量
if(flag){
System.out.println(“不重复”);
}else{
System.out.println(“重复”);
}
在该代码中,flag变量存储是否重复,true代表不重复,false代表重复。
外部循环中循环变量i代表第一个元素的下标,内部循环中循环变量j代表后续元素的下标,当i为零时和后续所有元素比较,然后当i为1时也和后续所有元素比较,依次类推,这样实现所有元素之间的两两比较。
然后如果元素相同,则代表有重复,把flag变量的值置成flase,结束循环。
最后根据flag变量的值就可以判断是否重复了。
(二)拷贝数组方法arraycopy的使用
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制.
其函数原型是:
publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)
src:
源数组;srcPos:
源数组要复制的起始位置;
dest:
目的数组;destPos:
目的数组放置的起始位置;
length:
复制的长度.
注意:
srcanddest都必须是同类型或者可以进行转换类型的数组。
1.编译和运行下面的程序,观察并分析结果。
packagecom.yiibai;
importjava.lang.*;
publicclassSystemDemo{
publicstaticvoidmain(String[]args){
intarr1[]={0,1,2,3,4,5};
intarr2[]={0,10,20,30,40,50};
//copiesanarrayfromthespecifiedsourcearray
System.arraycopy(arr1,0,arr2,0,1);
System.out.print("array2=");
System.out.print(arr2[0]+"");
System.out.print(arr2[1]+"");
System.out.print(arr2[2]+"");
System.out.print(arr2[3]+"");
System.out.print(arr2[4]+"");
}
}
(1)编译SystemDemo.java
(2)运行SystemDemo.class
(3)把源程序写在实验报告中。
(4)程序的输出结果写在实验报告中。
(二)数组类Arrays的应用
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
(1)给数组赋值:
通过fill方法。
(2)对数组排序:
通过sort方法,按升序。
(3)比较数组:
通过equals方法比较数组中元素值是否相等。
(4) 查找数组元素:
通过binarySearch方法能对排序好的数组进行二分查找法操作。
1.编译和运行下面的程序,观察并分析结果。
import java.util.Arrays;
public class TestArrays {
public static void output(int[] array) {
if (array!
=null) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
System.out.println();
}
public static void main(String[] args) {
int[] array = new int[5];
//填充数组
Arrays.fill(array, 5);
System.out.println("填充数组:
Arrays.fill(array, 5):
");
TestArrays.output(array);
//将数组的第2和第3个元素赋值为8
Arrays.fill(array, 2, 4, 8);
System.out.println("将数组的第2和第3个元素赋值为8:
Arrays.fill(array, 2, 4, 8):
");
TestArrays.output(array);
int[] array1 = {7,8,3,2,12,6,3,5,4};
//对数组的第2个到第6个进行排序进行排序
Arrays.sort(array1,2,7);
System.out.println("对数组的第2个到第6个元素进行排序进行排序:
Arrays.sort(array,2,7):
");
TestArrays.output(array1);
//对整个数组进行排序
Arrays.sort(array1);
System.out.println("对整个数组进行排序:
Arrays.sort(array1):
");
TestArrays.output(array1);
//比较数组元素是否相等
System.out.println("比