Java实验指导书版Word文件下载.docx
- 文档编号:5816804
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:38
- 大小:1.08MB
Java实验指导书版Word文件下载.docx
《Java实验指导书版Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java实验指导书版Word文件下载.docx(38页珍藏版)》请在冰点文库上搜索。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
要想使用Java设计图形用户界面,必须掌握Javax.swing和Java.awt包中的所有容器类和组件类的用法。
本课程实验教学项目及其教学要求
序
号
实验项目名称
学
时
教学目标、要求
1
开发运行环境及Java程序调试
2
Java程序流程控制
3
Java面向对象程序设计
(1)
4
Java面向对象程序设计
(2)
5
Java常用类
6
Java集合
7
Java异常处理程序设计
8
Java输入/输出流操作
9
图形用户界面设计
10
多线程编程技术
参考文献
《JAVA程序设计实验指导》,陈轶等编著,清华大学出版社,2006年。
《JAVA语言教程》(第1版),王伦津等编,人民邮电出版社,2001年。
《Java程序设计教程》(第5版),Deitel著,清华大学出版社,2004年。
《Java编程思想》(第3版),BruceEckel著,机械工业出版社,2005年。
第二部份 基本实验指导
Java基本语法
实验目的
●
熟悉基本数据类型、变量的命名约定和常量的表达
掌握数据类型的自动转换与强制转换
掌握运算符与表达式的用法
掌握算术运算、关系运算及逻辑运算的优先关系
掌握位运算的使用方法
实验步骤
一、常量与变量的声明与使用
1.
分析并通过程序验证以下表达式:
(1)shorts=33L;
(2)inti=33L;
(3)long
l=33L;
(4)floatf=33L;
(5)doubled=33L;
2.
首先分析判断能否编译成功,并在表2-1-1中填写预测结果:
表2-1-1
实验结果
3.
使用Eclipse开发工具,编写上述代码,编译运行代码,查看程序执行结果,在上表中填写验证结果。
根据记录的实验结果回答以下问题:
●
哪些表达式能编译成功?
为什么?
●
哪些表达式不能编译成功?
如何修改表达式才能编译成功?
二、运算符与表达式
定义两个变量a和b为:
(1)inta=10;
(2)intb=3;
(一)算术运算符操作练习
求变量a和b的和、差、乘积、商和余数,并在下表中填写预测结果:
表2-2-1
实验结果
(二)运算符优先级操作练习
分析表达式,并在下表中填写预测结果,且比较运算符优先关系。
表2-2-2
●根据记录的预测结果和验证结果,分析++和+的运算优先级关系。
(三)位运算符操作练习
求出a与b的各种位运算,并在下表中填写预测结果:
表2-2-3
●重新定义变量a的值,令a=-10,再次验证“a>
>
b”和“a>
b”的结果,并分析“a>
b”与“a>
b”的区别。
实验二java程序流程控制
实验目的:
1.理解Java程序的三种基本结构,即顺序结构、分支结构和循环结构
2.掌握用于分支的if…else、switch…case语句
3.掌握用于循环的for、while、do…while语句
4.熟悉break、continue作用
实验步骤:
一.if语句练习
编写程序实现判断输入的年份是否为闰年。
「提示」闰年:
如果一个年份能被4整除并且不能被100整除,或者能被400整除的就是闰年。
源代码如下:
使用Eclipse开发工具,编写上述代码,编译运行代码,查看程序执行结果,并在下表中填写验证结果,是闰年填“Y”,不是闰年填“N”。
如何将上述代码中的
(1)至(6)代码改写为一条if语句实现。
二.switch语句练习
编写程序实现学生成绩等级划分,输入考试成绩等级,程序会相应输出相应的百分制分数段,要求需使用switch语句。
「提示」if语句和switch语句结合使用。
等级划分如表3-1-2所示:
表3-1-2
学生成绩等级划分
使用Eclipse开发工具,编写上述代码,编译运行代码,查看程序执行结果,并输入测试case,对照等级划分表验证程序结果。
三.for语句练习
编写程序,输出1到100之间,所有可以被3整除又可以被7整除的数。
使用Eclipse开发工具,编写上述代码,编译运行代码,查看程序执行结果。
分别使用while和do_while循环语句改写本程序,并上机运行。
四.程序流程控制语句综合应用
根据以下要求,运用程序流程控制语句打印“田”字。
程序要求:
根据输入“田”字的长度进行打印输入,长度须为奇数,并且大于等于5,否则予以提示。
运行效果图如下:
「提示」输入整型变量的语句如下代码所示:
Java面向对象程序设计
(一)
掌握类的定义;
掌握构造方法的使用;
掌握对象的创建。
掌握静态变量与静态方法的使用;
了解静态变量和成员变量的区别。
熟悉访问修饰符的作用;
掌握访问修饰符的使用方法。
掌握方法的重载;
掌握访问器get/set方法。
一、类和对象的创建
创建一个圆类,成员变量有半径radius和圆周率pi,提供计算圆面积的方法,并在main方法中创建圆类的对象,调用其计算面积的方法进行测试。
试述程序中两个类的各自作用。
类Circle都封装了什么?
求圆面积的初始数据是通过哪个方法实现的?
请修改程序采用构造函数的方法初始化数据。
类Circle是如何声明的?
在类中都声明了什么?
在主函数中是如何创建Circle类对象的?
二、静态变量和静态方法的设计
(一).静态变量和实例变量练习
创建一个类,类名为StaticVariableTest,包含static变量和实例变量,类型为int型,在main方法中分别调用这2个变量并且输出结果。
部分源代码如下:
将上述代码中的main方法补充完整后,编译运行代码,查看程序执行结果。
根据完善后的源码,分析调用静态变量和实例变量有什么不同?
(二).静态方法和实例方法练习
创建一个类,类名为StaticMethodTest,包含一个静态方法和一个实例方法,在main方法中分别调用这个两个方法进行测试。
将上述代码中的main函数补充完整,编译运行代码,查看程序执行结果。
根据完善后的源码,分析如何调用静态方法和实例方法?
三、访问修饰符与方法的重载
(一).访问修饰符练习
创建一个Person类,在该类中用不同的访问修饰符设立不同的person属性,再创建一个PersonTest类,包括main方法,在此类中分别访问Person类中各个属性。
先填写下面的表格,在预测结果中,如果能打印输出,填写程序输出结果,否则填“N”。
记录程序运行结果。
表4-3-1
预测和验证结果
4.
使用Eclipse开发工具,编写上述代码,编译运行代码。
在上表中填写程序验证结果。
访问private变量时,编译会出现什么问题,为什么?
通过什么方式能访问private变量?
编程实现访问Person类中的private变量。
(二).方法重载练习
给出一个OverloadTest类,并定义了一个amethod()方法,分析A)、B)、C)、D)和E)五个方法能否正确编译;
根据程序执行结果分析类中A)、B)、C)、D)和E)五个方法哪些能编译,哪些不能编译,为什么?
实验四:
面向对象的程序设计
(二)
1.掌握类的继承、方法覆盖和变量的隐藏。
2.理解父类与子类的关系及创建方法。
3.掌握子类对象创建过程中与父类构造函数的关系。
4.了解抽象类与抽象方法。
5.掌握多态的实现机理及方法。
6.掌握接口的定义和使用
7.了解接口的设计方法
8.掌握包的定义和使用
一.继承类的访问修饰符练习
定义一个父类,有不同访问级别的成员变量和方法;
再定义一个子类,继承上面的父类,访问父类的成员变量和成员方法。
子类源代码如下:
5.
分析上面main方法的每一步中,哪些成员变量和方法可以访问,哪些不能访问?
填写下面表格中的预测结果,可以访问的填“Y”,不可以访问的填“N”。
表4-1-1
6.
使用Eclipse开发工具,编写上述代码,编译运行代码,查看程序执行结果,并填写表5-1-1中的验证结果。
二.成员变量的隐藏和方法覆盖练习
以下程序具有继承、成员的覆盖与隐藏的概念。
子类Son中隐藏了父类Father哪个变量?
覆盖了哪个方法?
根据上述程序,分析方法重载与方法覆盖的区别。
三.类的多态性的练习
1.下面源代码演示了多态的各种特性。
分析上述代码中的who.var和who.staticVar、who.method()和who.staticMethod()的输出结果有什么不同?
为什么存在这种现象?
分析以下代码,编译时会有什么问题?
分析以下代码,如何能让who访问Sub类的成员?
分析以下代码,运行会有什么问题?
四.接口相关练习
定义一个rec_Area_Peri接口,里面有两个方法getArea()和getPerimeter(),分别表示“计算面积”和“计算周长”;
再定义一个Rectangle类,实现接口rec_Area_Peri。
在实现类Rectangle中注释掉一个方法后进行编译,看发生了什么?
在实现类Rectangle中将各实现方法前的public修饰符去掉再进行编译,看发生了什么?
将接口rec_Area_Peri中定义的两个方法前加上abstract修饰符再编译,看对程序有影响否?
将接口rec_Area_Peri中定义的两个方法拆分定义成两个接口,即每个接口只定义一个方法,程序将如何修改?
五.包的相关练习
创建两个java文件,一个是mypack.java文件,定义两个类classA和classB,类修饰符为默认。
另一个是主类文件TestPackage.java,在该类中使用classA和classB。
两个java文件都在package1包中。
mypack.java源代码如下:
TestPackage.java源代码如下:
将主类文件TestPackage.java封装在另一个包mypackage2,再进行编译,看编译结果提示什么结果?
以上条件不变,在主类classTestPackage加进importmypackage1.*语句,再编译,看是什么编译错误?
将类classA和classB修饰为public再编译,看发生了什么?
将类classA和类classB分别放在两个文件中再编译,再看TestPackage还存在什么错误?
将方法aaa()和bbb()修饰为public,重新编译,所有错误是否消失?
无错误后可运行主类,观察运行结果。
掌握String类的构造方法和常用方法;
掌握StringBuffer类的构造方法和常用方法。
了解Math类常用方法的使用;
了解静态导入方法的使用。
掌握Date类和DateFormat常用方法的使用;
掌握Calendar类常用方法的使用。
一、String类
1.给定一个字符串“abcdefghijklmnopqrstuvwxyz”,要求用两种方法进行倒序输出。
「提示」
(1)转换成字符数组,进行倒序输出;
(2)调用StringBuffer类的方法。
「提议」学好Java,要经常查看API文档,而且要会查看API文档,熟悉API中的常用包下的常用类。
通过查看API去了解String和StringBuffer中的方法,就可以完成此题了。
经过上述分析,编写代码,编译运行代码,输出为“zyxwvutsrqponmlkjihgfedcba”。
分析上述程序,如何将字符串转换为字符数组?
转换之后如何进行输出,才能得到想要的倒序结果?
如何通过String参数构建StringBuffer对象?
StringBuffer是否有方法可以直接进行倒序输出?
二、Math类
给定如下两个整数:
(1)intvar1=12;
(2)intvar2=3;
完成下列表格中的预测结果:
表7-2-1
使用Eclipse开发工具,编码实现通过Math类中的max()方法和min()方法求最大值最小值,并根据程序执行结果填写上表的验证结果。
「提示」Math中的方法都是static类型的,可以通过Math.xxx()的形式进行调用方法。
将代码修改为静态导入的方式,说明采用静态导入方式的优势。
三、Date类和Calendar类
(一).Date类和DateFormat类练习
构造Date类对象获取系统日期,并格式化输出如下形式,如:
“2012-12-20星期六”。
如果要输出为“2012-12-20星期六12:
12:
12”的形式应该如何做呢?
(二).Calendar类练习
利用Calendar类输出2011年4月的日历页。
考虑如何将程序修改为能根据当前日期改变的日历页,并且能够标识当前日期?
实验六:
java异常处理
1.了解Java异常处理机制的优点
2.了解Java异常的种类
3.掌握异常的捕获与处理
4.掌握异常的抛出
5.
熟悉用户自定义异常
6.了解异常处理原则
一.异常捕获和处理的练习
1.下面源代码要捕捉的异常是除数为零和数组下标越界。
通过修改a和c[]下标值体验程序。
使用Eclipse开发工具,编写并完善上述代码,编译运行代码,查看程序执行结果。
按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里哪些语句没有被执行,为什么?
块外哪些语句可被执行到,为什么?
(1)修改a=0,保持c[2]=200;
(2)保持a=10,修改c[3]=200;
(3)修改a=0,修改c[3]=200。
二.自定义异常的定义和使用的练习
设计两个数求商的程序,并设定一个异常类,判断两数相除时,除数是否为零,当除数为零时将抛给自定义异常类,并输出除数为零。
分析上述代码,将division方法体中的代码补充完整,判断输入的除数是否为0。
如果为0,要抛出DivisorIsNotZeroException异常;
如果不为0,则计算这个数的商。
并按要求创建自定义异常类DivisorIsNotZeroException。
在main方法中已经给出如何输入数据和调用所写方法。
代码完善后,编译运行代码,输入下表数据进行验证,如果抛出异常填“Y”,否则填“N”。
表6-2-1测试数据
分析自定义异常是如何创建的?
掌握Collection和Iterator接口的使用
掌握List集合的使用
了解集合的不同遍历方式
掌握Map、HashMap集合的使用
了解Map集合的常用方法
理解Map集合的实现原理
一、Collection集合
创建一个集合,装20个不同的随机数(1-100),然后将排序结果,以及排序后的倒序结果输出。
分析上述代码是如何判断列表list中是否存在元素的?
若选用其他方式如何实现?
在TestList类中编写一个方法(方法名为ListOut),选用Iterator和增强for循环遍历方式输出列表list的元素。
二、Map集合
做一个map集合,key值100以内随机十个不同的数,value值26个字母随机取,输出key值和value值。
通过什么方式能对Map里的元素进行有规则的排序?
比如将上述代码中的map值对象进行排序。
实验八:
java输入输出流操作
1.了解字节流和字符流
2.了解流的分类
一.Java输出流操作
求2-200间的素数,将结果通过输出流保存在“D:
\\prime.dat”文件中;
二.Java输入流操作
通过输入流操作,将上题中保存到“D:
\\prime.dat”中的素数读出来,并在控制台打印出来。
三.Java输出流和输入流综合应用
通过Java输出流和输入流操作练习,实现将“D:
\\prime.dat”文件复制到“D:
\\newprime.dat”。
「提示」先将prime.dat中的内容通过输入流读取进来,再将读取到的内容通过输出流输出到目标文件中。
GUI图形用户界面
了解GUI
了解AWT常用容器
掌握AWT常用组件的用法
了解GUI常用布局管理器的种类及用法
掌握常用事件处理
一、AWT组件及其事件处理
模拟计算器的布局,如图9-1-1所示。
图9-1-1
计算器布局
「分析」计算器整体布局包括两个输入文本框、一个结果输出框、加、减、乘、除、平方和开方按钮。
分析上述程序,采用了哪些类型的监听器?
采用什么方式实现监听接口?
采用了什么布局管理器,各组件按什么次序加入组件的?
分析事件执行方法actionPerfor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实验 指导书