1、Java面向对象程序设计试验指导书适用专业:计算机网络技术执 笔 人:周辉奎南昌工学院信息学院 编二一三年十月目 录试验项目一 Java开发环境搭建1试验项目二 Java语言基础8试验项目三 Java语言面向对象基础21试验项目四 图形用户界面设计39试验项目五 异常处理44试验项目一 Java开发环境搭建一、试验目标和要求:(一)目标: 1、熟悉安装JDK、JRE;2、熟悉环境变量配置;3、熟悉Eclipse;4、掌握命令提醒符运行第一个java程序。(二)要求: 1、认真做好试验前各项准备工作,熟悉试验内容和机器操作步骤。2、遵守试验室规章制度和试验课堂教学纪律。3、认真完成试验任务,填写
2、试验汇报。二、试验时数:2课时三、试验器材:操作系统:Windows XP操作系统应用系统:Eclipse四、试验内容或步骤:试验1.1 Java开发环境搭建1、Java JDK安装单击Java JDK安装包,然后弹出提醒框,点击下一步,直到选择安装目录图1所表示,将安装目录放在E:Javajdk1.6.0_35,然后继续下一步。图1 设定JDK安装目录JDK(Java开发工具)安装完成后,系统会自动安装JRE(Java 运行时环境),更改JRE安装目录,将其和JDK放在同一目录下,图2所表示。图2 设定JRE安装目录安装完成后,出现图2所表示界面。图3 Java环境安装结束界面2、配置环境变
3、量Java JDK安装完成后,并不能立即使用,还需要配置相关环境变量。右键单击我电脑属性弹出以下对话框,选择高级环境变量。图4 系统高级属性对话框首先,在系统变量中新建一个JAVA_HOME变量,该变量值为JDK安装目录。在此为E:Javajdk1.6.0_35。(和前面安装时指定目录一致)图4 JAVA_HOME环境变量设置注意:变量值后不需要加任何符号。然后在系统变量中查找path变量,假如存在,则将JDK安装目录下bin文件夹添加其后,多个目录以分号隔开,图5所表示。假如不存在则新建一个,然后将bin目录放进去即可是E:Javajdk1.6.0_35bin;图5 在path变量中添加Ja
4、va bin目录新建classpath环境变量,该变量值为JDK安装目录下lib目录,在此为:;%JAVA_HOME%lib。图6所表示。图6 classpath环境变量设定配置完成后,单击开始运行,输入cmd,图7所表示,确定,打开命令行窗口。图7 打开命令行窗口命令在命令行窗口中输入java version命令,显示安装Java 版本信息,图8所表示,则表明java JDK、 JRE安装成功。图8 Java JDK、 JRE安装测试结果在命令行窗口中输入javac命令,显示安装javac一系列选项参数,图9所表示,则表明java开发环境搭建成功。图9 Java环境测试结果【附录】利用命令提
5、醒符来运行Java程序:1、假设在F盘文件夹javaexe有HelloWorld.java文件。【操作步骤】开始运行cmd,一步步按以下输入(注意:类名和编译文件名必需大小写一致)说明:javac命令表示编译;java命令表示运行。【总结】开发Java程序之前JDK、JRE安装及环境配置一、先安装JDK、JRE,安装时必需全部在同一个目录,假设在E:Javajdk1.6.0_35。安装完,用命令提醒符测试安装是否正确。开始运行cmdjava version,假如显示JDK版本,则安装正确。二、配置环境变量1、右击我电脑属性,选高级环境变量。2、在系统变量中新建一个变量名为JAVA_HOME,变
6、量值为 E:Javajdk1.6.0_353、在系统变量中查找path变量,假如存在,则将JDK安装目录下bin文件夹添加其后,多个目录以分号隔开,E:Javajdk1.6.0_35bin;4、新建classpath环境变量,变量值为 ;%JAVA_HOME%lib环境变量配置完,用命令提醒符测试配置是否正确。开始运行cmdjavac,假如显示javac一系列选项参数,则表明java开发环境搭建成功。五、注意事项:1、注意使用javac命令编译源程序。2、注意使用java命令运行程序。六、练习项目及思索题:1、怎样搭建java开发环境。试验项目二 Java语言基础一、试验目标和要求:(一)目标
7、: 1、 了解Java 数据类型;2、 掌握多种变量申明方法;3、 了解运算符优先级;4、 掌握Java 基础数据类型、运算符和表示式、数组使用方法;5、 了解Java 程序语法结构,掌握次序结构、选择结构和循环结构语法程序设计方法;6、 经过以上内容,掌握Java 语言编程规则。(二)要求: 1、编写一个申明Java 不一样数据类型变量程序;2、编写一个使用运算符、表示式、变量程序;3、编写一个使用Java 数组程序;4、编写表示式语句、复合语句程序;5、编写使用不一样选择结构程序;6、编写使用不一样循环结构结构程序。二、试验时数:6课时三、试验器材:操作系统:Windows XP操作系统应
8、用系统:Eclipse四、试验内容或步骤:1、 试验2.1申明不一样数据类型变量(1) 编写申明不一样数据类型变量程序文件EXP2_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.println(字节型变量 b = +b);S
9、ystem.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) 编译并运行该程序,结果图2.1 所表示。图 2.12、 了解变量
10、使用范围(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 所表示。因为变量k 在方法块中申明,在方法块之外它是不
11、存在,所以编译时会犯错。图 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.out.println(因为e 非0 且a/e 为8 大
12、于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;int arr1=new int34;a0=10;a1=10+
13、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);System.out.println(arr1(+0+,+0+)
14、 = +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、 使用表示式语句和复合语句(1) 建立包含表示式语句程序,源代码以下。cla
15、ss 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.out.println(在复合块内输出 f=+f);Syste
16、m.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 整除,又能被100 整除。(2) 编写源程序文件,代码以下。public cl
17、ass EXP2_7 public static void main(String args) boolean leap;int year=20XX;if (year%4=0 & year%100!=0) | (year%400=0) / 方法1System.out.println(year+ 年是闰年);elseSystem.out.println(year+ 年不是闰年);year=20XX; / 方法2if (year%4!=0)leap=false;else if (year%100!=0)leap=true;else if (year%400!=0)leap=false;elsele
18、ap=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.out.println(year+ 年不是闰年);(3) 编译运行程序,其结果
19、图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+ 正适宜。出去玩吧。);case 3:System.out.println( +c+ 有点热。)
20、;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;System.out.println(+c+h);(3) 编译并运行程序,其结
21、果图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键可退出循环操作.);while (ch=(char)System.in.read
22、()!= ) 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.println(真不幸,你没有奖品!下次再来吧。);(3) 编译源程序。(4)
23、在命令提醒符窗口运行程序,然后分别按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 所表示。图 2.117.4、 多重循环练习(1) 输出九九乘法表程序,源代码以下。pub
24、lic 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;j+)System.out.print( +i*j);System.out.pri
25、ntln();(2) 编译并运行程序,结果图2.12 所表示。五、注意事项:1、注意Java集成开发环境Eclipse使用。2、注意Java程序编码方法及书写习惯。六、练习项目及思索题:1、观察输出结果,发觉九九表行和列没有对齐,怎样才能输出一张行列对齐九九表?试验项目三 Java语言面向对象基础一、试验目标和要求:(一)目标: 1、经过编程和上机试验了解Java语言是怎样表现面向对象编程基础思想;2、了解类封装方法,和怎样创建类和对象;3、了解组员变量和组员方法特征;4、掌握面向对象程序设计方法;5、了解类继承性和多态性作用;6、了解接口作用。(二)要求: 1、 编写一个表现面向对象思想程序
26、;2、 编写一个创建对象和使用对象方法程序;3、 编写一个显示目前日期和时间程序;4、 编写不一样组员变量修饰方法程序;5、 编写不一样组员方法修饰方法程序;6、 编写表现类继承性(组员变量、组员方法、组员变量隐藏)程序;7、 编写表现类多态性(组员方法重载、结构方法重载)程序;8、编写表现接口功效程序。二、试验时数:12课时三、试验器材:操作系统:Windows XP操作系统应用系统:Eclipse四、试验内容或步骤:1、 试验3.1设计类来描述真实客观世界中事物,使用类组员变量来表示事物属性和状态,使用类组员方法来提供对组员变量访问或修改(1) 程序功效:设计一个用来描述汽车类,使用类非静
27、态组员变量来表示汽车车主姓名、目前速率和目前方向盘转向角度,使用类非静态组员方法来表示改变汽车速率和停车两个操作。(2) 程序源代码以下。public 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
28、 dirInDegree) this(ownerName); this.curSpeed=speed; this.curDirInDegree=dirInDegree; public String getOwnerName() /提供对车主姓名访问 return ownerName; public float getCurDirInDegree() /提供对目前方向盘转向角度访问 return curDirInDegree; public float getCurSpeed() /提供对目前车速访问 return curSpeed; public void changeSpeed(float
29、curSpeed) /提供改变目前车速 this.curSpeed = curSpeed; public void stop() /提供停车 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); S
30、ystem.out.println(车主姓名: +car.getOwnerName(); System.out.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(); (
31、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.MI
32、NUTE);ss=t.get(t.SECOND);public String getDate() return y+ 年+m+月+d+日;public String getTime() return hh+ 时+mm+分+ss+秒;public class EXP3_3public static void main(String args)Time t=new Time();System.out.println(目前日期:+t.getDate();System.out.println(目前时间:+t.getTime();(5) 编译并运行,结果图3.2所表示。图 3.24、 使用修饰符来限定类
33、组员变量或组员方法属性有时需要公开部分变量和方法,有时需要严禁其它对象使用变量和方法,这时能够使用修饰符来实现这个目标。常见修饰符以下:public private protected package static final transient volatile不一样修饰符访问控制权限如表3.1 所表示。访问权限修饰符类子类包全部类和包publicprivateprotectedpackage表 3.1(1) 程序功效:经过两个类StaticDemo、EXP3_4 说明静态变量/方法和实例变量/方法区分。(2) 程序源代码以下。class StaticDemo static int x;in
34、t y;public static int getX() return x;public static void setX(int newX) x = newX;public int getY() return y;public void setY(int newY) y = newY;public class EXP3_4 public static void main(String args) System.out.println(静态变量x=+StaticDemo.getX();System.out.println(实例变量y=+StaticDemo.getY(); /非法,编译时将犯错
35、StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println(静态变量a.x=+a.getX();System.out.println(实例变量a.y=+a.getY();System.out.println(静态变量b.x=+b.getX();System.out.println(实例变量b.y=+b.getY();(3) 对上面源程序进行编译,会出现图3.3所表示犯错提醒。图 3.3(4) 将源程序中犯错语句删除
36、或使用解释符/隐藏起来,比如,/System.out.println(实例变量y=+StaticDemo.getY();(5) 重新编译并运行该程序,结果图3.4所表示。图 3.45、 调用方法时参数传输练习在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在Java 中,方法中参数传输能够分为传值调用或对象方法调用等方法。传值调用即传输参数是基础数据类型,调用方法时在方法中将不能改变参数值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象方法,这种方法能够修改许可存取组员变量。所以,假如不想改变参数值,能够采取传值调用方法。假如想改变参数值,可采取对象调用方法,间接修
37、改参数值。5.1、编写一个传值调用程序(1) 程序功效:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方法调用方法ff1对x 和y 做乘方及输出x 和y 乘方值,最终再输出x 和y 乘方值。(2) 程序源代码以下。class EXP3_5 public static void main(String args) int x=10, y=10;ff1(x, y);System.out.println(x=+x+, y=+y);static void ff1(int passX, int passY) passX=passX*passX;passY=passY*passY;Syste
38、m.out.println(passX=+passX+, passY=+passY);(3) 编译并运行,结果图3.5。图 3.55.2、编写一个调用对象方法程序(1) 程序功效:经过调用对象方法在方法调用后修改了组员变量值。(2) 程序源代码以下。class EXP3_6 public static void main(String args) Power p=new Power();p.ff2(10,10);System.out.println(方法调用后 x=+p.x+, y=+p.y);class Powerint x=10, y=10;void ff2(int passX, int passY) System.out.println(初始时 x=+x+, y=+y);x=passX*passX;y=passY*passY;System.out.println(方法调用中 x=+x+, y=+y);(3) 编译并运行,结果图3.6。图 3.66、 类继承性练习新类可从现有类中产生,并保留现有类组员变量和方法并可依据需要对它们加以修改。新类还可添加新变量和方法。这种现象就称为类继承。当建立一个新类时,无须写出全部组员变量和组员方法。只要简单地申明这个类是从一个已定义类继承下来,就能够引用被继承类全部组员。被继承类称为父类或超类(superclass