《《Java程序设计》实验指导书精品资料.doc》由会员分享,可在线阅读,更多相关《《Java程序设计》实验指导书精品资料.doc(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java程序设计实验指导书成都信息工程学院计算机系2006目 录概 述- 1 -实验一 Java程序设计基础- 3 -实验二 Java语言基础- 15 -实验三 Java语言面向对象基础- 28 -实验四 异常处理和包装类的编程练习- 45 -实验五 Java语言的字符串类- 54 -实验六 多线程基础编程- 55 -实验七 多线程并发编程- 56 -实验八 字符流和字符流输入/输出编程- 57 -实验九 集合、列表、映射类编程- 58 - 概 述一、 上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解Java语言的基本结构和程序设计方法。通过亲手编程
2、掌握Java 语言编程的方法。二、 实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了9个实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的9个实验如下。一、 Java程序设计基础二、 Java语言基础三、 Java语言面向对象基础四、 异常处理和包装类的编程练习五、 Java语言的字符串类六、 多线程基础编程七、 多线程并发编程八、 字符流和字符流输入/输出编程九、 集合、列表、映射类编程三、 实验任务与时间安排Java 编程技术是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外使用相关技术进行编程练
3、习。Java 编程技术上机实验时间为18学时,与教学内容同时进行上机实验。18个上机学时分为9个实验。四、 实验设备要求Java的开发和运行环境对机器的配置要求较高。下面给出的是实验用机的软件和硬件基本配置。软件配置:Windows 2000 Professional、IE5.5以上硬件配置:CPU P4 2.0G以上、内存 512MB以上实验一 Java程序设计基础实验目的1、 学习构建Java语言开发和运行环境2、 学习使用EditPlus编写Java源程序3、 学习使用javac命令编译源程序4、 学习使用java命令运行程序5、 初步了解使用Java语言进行程序设计的基本步骤6、 为进
4、行后续实验做好准备实验要求1、 下载、安装Java软件开发工具包(JSDK);2、 设置相关环境变量;3、 使用EditPlus编写一个简单的Java程序;4、 使用javac命令编译源程序;5、 使用java命令运行程序,观察运行结果。实验内容1、 Java软件开发工具包(JSDK)的下载与安装(1) 下载SDK为了建立基于SDK 的Java 运行环境,需要先下载Sun 的免费SDK 软件包。SDK 包含了一整套开发工具,其中包含对编程最有用的是Java 编译器、Applet 查看器和Java 解释器。在浏览器中输入 所示的Sun 公司网站页面。图 1.1在页面右边“Popular Down
5、loads”栏中可看到最新版的SDK 软件包(早期版本称为JDK),这里显示的是“J2SE 5.0”(当前最新版)。单击“J2SE 5.0”超链接,可看到图1.2 所示页面。图 1.2在页面的“Download JDK 5.0 Update 6”栏可以选择下载 最新的J2SE 5.0 SDK 软件包。有两种选择:一种是在线安装“Windows Installation”;一种是离线安装“Windows Offline Installation”。单击页面中“SDK”列对应的“DOWNLOAD”超链接,可看到图1.3 所示的下载协议说明书。图 1.3单击“ACCEPT”按钮,同意Sun 公司的协
6、议,可进入到图1.4 所示的下载页面,单击“Windows Offline Installation, Multi-language”超链接,开始下载工作,下载的安装文件保存为“jdk-1_5_0_06-windows-i586-p.exe”。图 1.4(2) 安装SDK运行“jdk-1_5_0_06-windows-i586-p.exe”软件包,可安装SDK,在安装过程中可以设置安装路径及选择组件,默认的安装路径为“C:Program FilesJavajdk1.5.0_06”,这里将安装目录指定为“D:jdkjdk1.5.0_06”,默认的组件选择是全部安装。(3) SDK安装目录中的Ja
7、va命令安装成功后,D:jdkjdk1.5.0_06 中的文件和子目录结构如图1.5 所示。图 1.5其中,“bin”文件夹中包含编译器(javac.exe)、解释器(javac.exe)、Applet 查看器(appletviewer.exe)等Java命令的可执行文件,如图1.6 所示。“demo”文件夹中包含一些源代码的程序示例。图 1.62、 环境变量的设置SDK 中的工具都是命令行工具,需要在命令行窗口从命令行提示符下运行它们。很多人可能会不习惯,但这是Sun 特意采取的策略,为的是把精力更多地投入到Java 语言本身而不是花在开发工具上。为了能正确方便的使用SDK,可手工配置一些W
8、indows 的环境变量。以Windows 2000 为例说明设置过程。在桌面“我的电脑”图标上单击右键,选择“属性”菜单,将出现系统特性设置界面,如图1.7 所示。图 1.7在“高级”选项卡中单击“环境变量”按钮。将出现“环境变量”设置界面,如图1.8 所示。图 1.8在“系统变量”框中选择“Path”,然后单击“编辑”按钮,在出现的“编辑系统变量”对话框中,在“变量值”栏的命令前添加“D:jdkjdk1.5.0_06bin;”命令,如图1.9 所示。图 1.9用同样方法设置环境变量“classpath”,其值为“D:jdkjdk1.5.0_06lib;”命令。设置完成后,单击“开始”“运行
9、”,在对话框中输入“cmd”,点击“确定”或键盘回车键后打开命令行窗口。在命令提示符下输入“java”或“javac”,回车后,如果出现其用法参数提示信息,则安装正确,如图1.10所示。图 1.10为了在打开命令行窗口时可以直接进入包含你开发的java程序的路径下,下面以Windows 2000为例说明设置过程。(1)首先建立一个存放java 源程序的路径和文件夹,如将实验中建立的java 源程序都存放在为“d:javaprog”文件夹中。(2)单击“开始”“所有程序”“附件”“命令提示符”,选择“命令提示符”选项右击,在出现的下拉菜单中选择“属性”菜单,将打开“命令提示符 属性”对话框,如图
10、1.11 所示。图 1.11(3)在“命令提示符 属性”对话框中选择“快捷方式”选项,在“起始位置”栏输入“d:javaprog”,单击“确定”按钮。进行了上面的设置后,打开命令行窗口时将直接进入“e:javaprog”路径下。如果没有进行上述设置,可使用DOS 命令,直接输入“d:”按回车进入到d 盘,再输入“cd java”到d 盘的java 子目录下,再输入“cd prog”即可到“e:javaprog”路径下。3、 使用EditPlus编写源程序要编写Java 程序,需要有文本编辑器。可以使用操作系统提供的Edit 或记事本作为编辑器,最好选择EditPlus 编辑软件,它可以使用不同
11、颜色显示Java 的关键字和类名,简单好用,同时可以对程序进行编译和运行。EditPlus为共享软件,在教育网各个软件下载网站都有下载。下载安装EditPlus软件后打开EditPlus 编辑软件,如图1.17 所示,在其右边文本区输入如下代码。public class HelloJava public static void main(String args) System.out.println(Hello Java!);图1.17将文件命名为HelloJava.java,保存为文本文件格式文件,注意保存文件的路径。根据前面环境变量的设置,HelloJava.java 应该保存在“e:ja
12、vaprog”的路径下。4、 使用javac命令编译源程序Java 源程序编写后,要使用Java 编译器(javac.exe)进行编译,将Java 源程序编译成可执行的程序代码。Java 源程序都是扩展名为 .java 的文本文件。编译时首先读入Java 源程序,然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成可执行程序代码即字节码,字节码文件名和源文件名相同,扩展名为 .class。可按照以下步骤操作:(1) 打开命令提示符窗口进入Java 源程序所在路径。(2) 键入“javac HelloJava.java”,如图1.18 所示。图 1.8(3) 按回车键开始编译(注意:文
13、件名大小写敏感)。如果源程序没有错误,则屏幕上没有输出,键入 “dir”按回车键后可在目录中看到生成了一个同名字的.class 文件“Hello. class” ,如图1.18 所示。否则,将显示出错信息。5、 使用java命令运行程序使用Java 解释器(java.exe)可将编译后的字节码文件HelloJava.class 解释执行。在命令提示符窗口键入“java HelloJava”,按回车键即开始解释并可看到运行结果,如果看到如图1.19 所示结果,表明程序运行成功了,这是一种字符方式的应用程序其结果显示在屏幕。图 1.196、 在EditPlus中编译和运行程序EditPlus中可以
14、设置在后台运行javac.exe和java.exe或其它外部可执行程序,同时可以指定当前编辑的文件或其它内容作为外部程序的执行参数,并将外部程序运行的结果显示在消息栏中,这可简化对Java程序编译和执行的操作,提高编程效率。(1) 打开EditPlus ,单击“工具”“配置用户工具”菜单,如图1.22 所示。图 1.22(2) 在打开的“参数设置”窗口如图1.23、图1.24 所示配置编译与运行环境。(a) 设置“编译”工具单击“组名称”按钮确定工具组的名称。单击“添加工具”按钮,从弹出的快捷菜单中选择“程序文件”命令。在“菜单文字”栏中输入“编译”文字;在“命令”栏中输入或通过文件夹选择ja
15、vac.exe文件的路径;在“参数”栏选择“文件名称”;在“初始目录”栏输入Java 程序所在的路径。(b) 设置“运行”工具与(a)同样的方法可以设置“运行”工具。请同学自己练习。图 1.23图 1.24(3) 编译与运行设置工具后,在“工具”菜单下的下拉菜单中就可以对Java 程序进行编译与运行操作了。(a) 单击“工具”“编译”菜单,如图1.25 所示。就开始对选中的程序进行编译处理。该过程要等一会儿。图 1.25(b) 编译通过后,可在右下方窗口看到编译结果,如图1.26 所示。如果程序有问题,会看到提示。图 1.26(c) 编译成功后,可运行该程序。单击“工具”“运行”菜单,如图1.
16、27 所示。图 1.27(d) 运行成功后,可在右下方窗口看到程序的运行结果,如图1.28 所示。图 1.28实验二 Java语言基础实验目的1、 了解Java 的数据类型;2、 掌握各种变量的声明方式;3、 理解运算符的优先级;4、 掌握Java 基本数据类型、运算符与表达式、数组的使用方法;5、 理解Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法;6、 通过以上内容,掌握Java 语言的编程规则。实验要求1、 编写一个声明Java 不同数据类型变量的程序;2、 编写一个使用运算符、表达式、变量的程序;3、 编写一个使用Java 数组的的程序;4、 编写表达式语句
17、、复合语句的程序;5、 编写使用不同选择结构的程序;6、 编写使用不同循环结构结构的程序。实验内容1、 声明不同数据类型的变量(1) 编写声明不同数据类型变量的程序文件LX2_1.java,源代码如下。public class EXP2_1 public static void main(String args) byte b=0x55;short s=0x55ff;int i=1000000;long l=0xffffL;char c=a;float f=0.23F;double d=0.7E-3;boolean B=true;String S=这是字符串类数据类型;System.out.p
18、rintln(字节型变量 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) 编译并运行该程序,结
19、果如图2.1 所示。图 2.12、 了解变量的使用范围(1) 建立EXP2_2.java 文件,通过本程序了解变量的使用范围,源代码如下。public class EXP2_2 static int i=10;public static void main(String args) int k=10;System.out.println(i=+i);System.out.println(k=+k);System.out.println(i=+i);System.out.println(k=+k);/编译时将出错,已出k的使用范围(2) 编译EXP2_2.java此时会出现错误提示如图2.2 所
20、示。因为变量k 在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。图 2.2(3) 修改上面的程序(4) 成功运行该程序思考:EXP2_2.java 程序说明了什么问题?3、 使用关系运算符和逻辑运算符(1) 建立使用关系运算符和逻辑运算符的程序文件,源代码如下。class EXP2_3 public static void main(String args) int a=25, b=20, e=3, f=0;boolean d=ab;System.out.println(a=25,b=20,e=3,f=0);System.out.println(因为关系表达式 a5)System.
21、out.println(因为e 非0 且a/e 为8 大于5,所以输出 a/e +a/e);if (f!=0 & a/f5)System.out.println(a/f = +a/f);elseSystem.out.println(因为f 值为0,所以输出 f = +f);(2) 编译并运行该程序,结果如图2.3 所示。图 2.34、 使用数组(1) 建立使用数组的程序,本程序建立了一个长度为5 的1 维数组,一个长度为12 的2 维数组,源代码如下。public class EXP2_4 public static void main(String args) int a=new int5;
22、int arr1=new int34;a0=10;a1=10+a0;a2=30;a3=40;a4= a1+ a2;arr100=0; arr101=1; arr102=2;arr110=3; arr111=4; arr112=5;arr120=6; arr121=7; arr122=8;System.out.println(a+0+ = +a0);System.out.println(a+1+ = +a1);System.out.println(a+2+ = +a2);System.out.println(a+3+ = +a3);System.out.println(a+4+ = +a4);S
23、ystem.out.println(arr1(+0+,+0+) = +arr100);System.out.println(arr1(+0+,+1+) = +arr101);System.out.println(arr1(+0+,+2+) = +arr102);System.out.println(arr1(+1+,+0+) = +arr110);System.out.println(arr1(+1+,+1+) = +arr111);System.out.println(arr1(+1+,+2+) = +arr112);(2) 编译并运行程序,结果如图2.4 所示。图 2.45、 使用表达式语
24、句与复合语句(1) 建立包含表达式语句程序,源代码如下。class EXP2_5public static void main(String args) int k, i=3, j=4;k=20*8/4+i+j*i;System.out.println(表达式(20*8/4+i+j*i)+k);(2) 建立包含复合语句程序,源代码如下。class EXP2_6public static void main(String args) int k, i=3, j=4;k=i+j;System.out.println(在复合块外的输出 k=+k);float f;f=j+4.5F;i+;System
25、.out.println(在复合块内的输出 f=+f);System.out.println(在复合块内的输出 k=+k);System.out.println(在复合块外的输出 i=+i);(3) 编译并运行上述两个源程序,结果如图2.5、2.6 所示。(4) 将变量i 在块内定义会怎样?改变其他变量的位置看看会发生什么变化。思考:指出程序的复合结构以及变量的使用范围。图 2.5图 2.66、 使用选择语句 6.1、 使用if.else 语句(1) 程序功能:使用if.else 语句构造多分支,判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被4 整除,但不能被100 整除;能被4 整
26、除,又能被100 整除。(2) 编写源程序文件,代码如下。public class EXP2_7 public static void main(String args) boolean leap;int year=2005;if (year%4=0 & year%100!=0) | (year%400=0) / 方法1System.out.println(year+ 年是闰年);elseSystem.out.println(year+ 年不是闰年);year=2008; / 方法2if (year%4!=0)leap=false;else if (year%100!=0)leap=true;
27、else if (year%400!=0)leap=false;elseleap=true;if (leap=true)System.out.println(year+ 年是闰年);elseSystem.out.println(year+ 年不是闰年);year=2050; / 方法3if (year%4=0) if (year%100=0) if (year%400=0)leap=true;elseleap=false;elseleap=false;elseleap=false;if (leap=true)System.out.println(year+ 年是闰年);elseSystem.o
28、ut.println(year+ 年不是闰年);(3) 编译运行程序,其结果如图2.7 所示。图 2.7思考:本程序中有几个选择语句,哪些具有嵌套关系?6.2、 使用switch 语句(1) 程序功能:在不同温度时显示不同的解释说明。(2) 程序源代码如下。class EXP2_8public static void main(String args) int c=38;switch (c10?1:c25?2:c35?3:4) case 1:System.out.println( +c+ 有点冷。要多穿衣服。);case 2:System.out.println( +c+ 正合适。出去玩吧。)
29、;case 3:System.out.println( +c+ 有点热。);default:System.out.println( +c+ 太热了!开空调。);(3) 编译运行程序,其结果如图2.8 所示。图 2.87、 使用循环语句7.1、 for 循环语句练习(1) 程序功能:按5 度的增量打印出一个从摄氏温度到华氏温度的转换表。(2) 程序源代码如下。class EXP2_9public static void main (String args) int h,c;System.out.println(摄氏温度华氏温度);for (c=0; c=40; c+=5) h=c*9/5+32;
30、System.out.println(+c+h);(3) 编译并运行程序,其结果如图2.9 所示。图 2.97.2、 while 循环语句练习(1) 程序功能:运行程序后从键盘输入数字1/2/3 后,可显示抽奖得到的奖品;如果输入其它数字或字符显示“没有奖品给你!”。(2) 程序源代码如下。import java.io.*;class EXP2_10 public static void main(String args) throws IOException char ch;System.out.println(按 1/2/3 数字键可得大奖!);System.out.println(按Q键
31、可退出循环操作.);while (ch=(char)System.in.read()!= ) System.in.skip(2); / 跳过回车键switch (ch) case 1:System.out.println(恭喜你得大奖,一辆汽车!);break;case 2:System.out.println(不错呀,你得到一台笔记本电脑!);break;case 3:System.out.println(没有白来,你得到一台冰箱!);break;case q: System.out.println(“欢迎下次再来!”); System.exit(0);default:System.out.
32、println(真不幸,你没有奖品!下次再来吧。);(3) 编译源程序。(4) 在命令提示符窗口运行程序,然后分别按1、2、3、r 结果如图2.10 所示。图 2.107.3、 dowhile 循环语句练习(1) 程序功能:求12+100 之和,并将求和表达式与所求的和显示出来。(2) 程序源代码如下。class EXP2_11 public static void main(String args) int n=1, sum=0;do sum+=n+;while (n=100);System.out.println(1+2.+100 =+sum);(3)编译并运行程序,结果如图2.11 所示
33、。图 2.117.4、 多重循环练习(1) 输出九九乘法表的程序,源代码如下。public class EXP2_12public static void main(String args)int i,j,n=9;System.out.print( * |);for (i=1;i=n;i+)System.out.print( +i);System.out.print(n-|);for (i=1;i=n;i+)System.out.print(-);System.out.println();for (i=1;i=n;i+)System.out.print( +i+ |);for (j=1;j=i
34、;j+)System.out.print( +i*j);System.out.println();(2) 编译并运行程序,结果如图2.12 所示。图 2.12思考:观察输出的结果,发现九九表的行和列没有对齐,如何才能输出一张行列对齐的九九表?实验三 Java语言面向对象基础实验目的通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握面向对象程序设计的方法,了解类的继承性和多态性的作用,了解接口的作用。实验要求1、 编写一个体现面向对象思想的程序;2、 编写一个创建对象和使用对象的方法的程序;3、 编写一个显
35、示当前日期和时间的程序;4、 编写不同成员变量修饰方法的程序;5、 编写不同成员方法修饰方法的程序;6、 编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;7、 编写体现类的多态性(成员方法重载、构造方法重载)的程序;8、 编写体现接口功能的程序。实验内容1、 设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改(1) 程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。(2) 程序源代码如下。pu
36、blic class EXP3_1 private String ownerName; /车主姓名 private float curSpeed; /当前车速 private float curDirInDegree; /当前方向盘转向角度 public EXP3_1(String ownerName) this.ownerName=ownerName; public EXP3_1(String ownerName, float speed, float dirInDegree) this(ownerName); this.curSpeed=speed; this.curDirInDegree
37、=dirInDegree; public String getOwnerName() /提供对车主姓名的访问 return ownerName; public float getCurDirInDegree() /提供对当前方向盘转向角度的访问 return curDirInDegree; public float getCurSpeed() /提供对当前车速的访问 return curSpeed; public void changeSpeed(float curSpeed) /提供改变当前的车速 this.curSpeed = curSpeed; public void stop() /提
38、供停车 this.curSpeed=0; (3) 编译源程序。2、 创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)(1) 创建类EXP3_1的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。(2) 程序代码如下。public class EXP3_2 public static void main(String args) EXP3_1 car=new EXP3_1(成龙,200f,25f); System.out.println(车主姓名: +car.getOwnerName(); System.out
39、.println(当前车速: +car.getCurSpeed(); System.out.println(当前转向角度: +car.getCurDirInDegree(); car.changeSpeed(80); System.out.println(在调用changeSpeed(80)后,车速变为: + car.getCurSpeed(); car.stop(); System.out.println(在调用stop()后, 车速变为: +car.getCurSpeed(); (3) 编译并运行,结果如图3.1所示。图 3.13、 编写显示当前时间和日期的程序(3) 程序功能:该程序通过使用一个自定义类Time,实现显示当前日期和时间的功能。(4) 程序代码如下。import java.util.Calendar;class Time private Calendar t;private int y, m, d, hh, mm, ss;Time ()t=Calendar.getInstance();y=t.get(t.YEAR);m=t.get(t.MONTH)+1;d=t.get(t.DATE);hh=t.get(t.HOUR_OF_DAY);mm=t.get(t.MINUTE);ss=t.get(t.SECOND);public String