版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA实验册2011 年 2 月实验一 Java 编程环境下载、安装、配置与运行开发语言及实现平台或实验环境 】Windows2000或 XP, JDK1.6 与 UltraEdit实验目的】1 掌握下载 javasdk 软件包2掌握设置 Java 程序运行环境的方法3掌握编写与运行 Java 程序的方法4了解 Java 语言的概貌实验要求】1. JDK的下载与安装2设置环境变量3.使用 UltraEdit 编辑源程序4.编译 Java 源程序5. 运行 Java 程序6.掌握向 main() 方法中传递参数实验内容 】JDK下载与安装1 .机器要求Java对机器运行要求不高。下面给出的是基
2、于Windows平台的机器要求。硬件要求:CP U田,128 M内存,1G硬盘空间即可软件要求: Windows2000/XP, IE6.02. 下载 JDKPopularDownloads ”栏中可看到最新版的 JDK 软件包( JDK1.6),并下载。3. 安装 SDK运行下载的“ jdk-6u15-windows-i586 ”软件包,在安装过程中可以设置安装路径及选择组件, 默认的组件选择是全部安装, 安装成功后, 其中 bin文件夹中包含编译器( javac.exe )、解释器( java.exe )、 Applet 查看器appletviewer.exe )等可执行文件, lib 文
3、件夹中包含了所有的类库以便幵发Java程序使用,demo文件夹中包含幵源代码程序实例。4.JDK 中主要文件夹和文件安装成功后, C:ProgramFilesJavajdk1.6.0_15中文件和子目录结构如图 1.1 所示。其中 bin 文件夹中包含编译器(javac.exe )、解释器java.exe )、 Applet 查看器( appletviewer.exe)等可执行文件, lib文件夹中包含了所有的类库以便开发 Java 程序使用, sample 文件夹包含开源代码程序实例, src 压缩文件中包含类库开源代码。设置环境变量J DK中的工具都是命令行工具,需要从命令行即MS-DOS
4、I示符下运行它们。很多人可能会不习惯,但这是 Sun 特意采取的策略,为的是把精力更多投入到Java语言本身而不是花在幵发工具上。以WindowsXP为例说明设置过程。右击桌面“我的电脑”图标,选择“属性”菜单在“高级”选项卡中单击“环境变量”按钮,将出现“环境变量”设置界在“系统变量”中,找到变量名“ PATH,选中后,点击“编辑”按钮,增加路径C:j2SDK1.6.0_15bin ”,如图所示; 在“系统变量”框中,单击“新建”按钮,在出现的“新建系统变量”的 对话 框中 , 在 “ 变 量 名 ”栏中 输入“ classpath ”, 设 置路径 为.;C:J2SDK1.6.0_15li
5、b” , 如图所示。设置完成后,单击“开始” >“所有程序” >“附件” >“命令提示符”打幵DOS窗口,在命令行提示符输入“ java ”或“ javac ”回车后, 如果出现其用法参数提示信息,则安装正确。三、编辑源程序 要编写 Java 程序,需要有文本编辑器。可使用操作系统提供的记事本作 为编辑器, 也可选择 UltraEdit 编辑软件, 它可以使用不同颜色显示 java的关键字和类名,简单好用。1) 下载并安装 UltraEdit 编辑软件或其他编辑软件编 写 在 屏 幕 上 显 示 文 字 “ HelloWorld !” 的 文 件 ( 和helloworld.
6、java )。打开 UltraEdit 编辑软件,新建源文件,并编写源代码,如图所示。四编译 java 源程序Java源程序编写后,要使用Java编译器(javac.exe )进行编译,将Java源程序编译成可执行的程序代码。 Java 源程序都是扩展名为 .java 的文件。编译时,首先读入 Java 源程序,然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成可执行程序代码即字节码,字节码 文件名和源文件名相同,扩展名为.class 。(1)打幵命令提示符窗口,进入 java源程序所在路径。按(2)键入编译器和要编译的源程序文件名:javachelloworld.java回车键幵
7、始编译。如源程序无错误,贝y屏幕上无输出,如图所示。(2)键入“ dir ”命令并回车可在目录中看到生成的同名类文件。五.运行Java程序使用java编译器(java.exe )可将编译后的字节码文件helloworld.class解释为本地计算机代码。在命令提示符窗口键入解释器和要解释的字节码文件名javahelloworld 。按回车键即幵始执行程序并输出结果。注意: 字节码文件区分大小写。六、编写程序要求给 main()方法传递参数,并在屏幕上输出。七、在上面两个源程序的基础上自定义包,编译运行程序。八(选做) 编写小应用程序,嵌入到 HTML文件中,利用小程序查看器运行查看。【思考题】
8、环境变量path和class path 的作用。实验二 Java 基本语法练习开发语言及实现平台或实验环境 】Windows2000或 XP, JDK1.6 与 UltraEdit实验目的】1了解 Java 的数据类型2掌握各种变量的声明方式3理解运算符的优先级45掌握 java 基本数据类型。运算符与表达式、数组的使用方法理解 Java 程序语法结构,掌握顺序结构、选择结构和循环结构语 法的程序设计方法实验要求 】1编写一个声明 java 不同数据类型变量的程序2编写一个使用运算符、表达式、变量的程序3编写一个使用 java 数据的程序4编写表达式语句、复合语句的程序5编写使用不同选择结构的
9、程序6编写使用不同循环结构的程序实验内容】一声明不同数据类型的变量1.编写声明不同数据类型变量的程序文件DEM02_1.java,源代码如下。publicclassDemo2_1publicstaticvoidmain(Stringargs)byteb=0x55;shorts=0x55ff;inti=1000000;longl=0xffffL;charc='a'floatf=0.23F;doubled=0.7E-3;booleanB=true;StringS=" 这是字符串类数据类型 "字节型变量 b="+b);短整型变量 s="+s);
10、整型变量 i="+i);长整型变量 l="+l);字符型变量 c="+c);浮点型变量 f="+f);双精度变量 d="+d);布尔型变量 B="+B);字符串类对象 S="+S);2编译并运行该程序。十进制或二进制整型数据显示。提示:利用 floatToIntBit 方法)4在屏幕上输出正、负无穷大的浮点数。5.创建一个CPerson类,包括以下属性:姓名、身份证号、性别和年龄。要求设计该类并添加一个对其成员变量初始化的构造方法。6课后思考题 P104-105 :1, 7,8二使用关系运算符和逻辑运算符1建立使用关系运算符
11、和逻辑运算符的程序文件,源代码如下。classDemo2_2publicstaticvoidmain(Stringargs)inta=25,b=20,e=3,f=0;booleand=a<b;因为关系表达式avb为假,所以其逻辑值为:"+d);if(e!=0&&a/e>5)因为e非0且ale为8大于5,所以输出ale = "+a/e);if(f!=0&&a/f>5)="+a/f);else因为f值为0,所以输出f="+f);2编译并运行该程序,结果如图 2.2 所示。三使用数组1建立使用数组的程序,本程序
12、建立了一个长度为5的1维数组 ,源代码如下。publicclassDemo2_3publicstaticvoidmain(Stringargs)inta=newint5;a0=10;a1=10+a0;a2=30;a3=40;a4=a1+a2;="+a0);="+a1);="+a2);="+a3);="+a4);2编译并运行程序。四使用表达式语句与复合语句1建立包含表达式语句程序,源代码如下。classDemo2_4intk,i=3,j=4;publicstaticvoidmain(Stringargs)k=20*8/4+i+j*i;表达式(20
13、*8/4+i+j*i)= "+k);2建立包含复合语句程序,源代码如下。classDemo2_5publicstaticvoidmain(Stringargs)intk,i=3,j=4;k=i+j;在复合块外的输出k="+k);floatf;f=j+4.5F;i+;在复合块内的输出f="+f);在复合块内的输出k="+k);在复合块外的输出i="+i);3编译并运行上述两个源程序,结果如图2.4 、2.5 所示五使用选择语句1使用 if.else 语句1) 程序功能: 使用 if.else 语句构造多分支, 判断某一年是否为闰年。闰年的条件是符
14、合下面二者之一:能被 4整除,但不能被 100整除;能被 4整除,又能被 100整除。2)编写源程序文件,代码如下。publicclassDemo2_6publicstaticvoidmain(Stringargs)booleanleap;intyear=2005;if(year%4=0&&year%100!=0)|(year%400=0)/方法 1年是闰年 ");else年不是闰年 ");year=2008;/ 方法 2if(year%4!=0)leap=false;elseif(year%100!=0)leap=true;elseif(year%400!
15、=0)leap=false;elseleap=true;if(leap=true)年是闰年 ");else年不是闰年 ");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)年是闰年 ");else年不是闰年 ");3)编译运行程序,其结果如图 2.6 所示。2使用 switch 语句1)程序功能:在不同温度时显示不同的解释说明。2)程序源代码如下。class
16、Demo2_7publicstaticvoidmain(Stringargs)intc=38;switch(c<101:c<252:c<353:4)case1:"+C+" C有点冷。要多穿衣服。");Case2:"+C+" C正合适。出去玩吧。");Case3:"+C+" C有点热。");default:"+C+" C太热了 !幵空调。");3)编译运行程序,其结果如图2.8 所示。六使用循环语句1 for 循环语句练习1)程序功能:按5度的增量打印出一个从
17、摄氏温度到华氏温度的转换表。2)程序源代码如下。classDemo2_8publicstaticvoidmain(Stringargs) inth,c;摄氏温度华氏温度 ");for(c=0;c<=40;c+=5)h=c*9/5+32;"+c+""+h);3)编译并运行程序,其结果如图 2.8 所示。2 while 循环语句练习1)程序功能:运行程序后从键盘输入数字 1/2/3 后,可显示抽奖得到的奖品;如果输入其它数字或字符显示“没有奖品给你”。2)程序源代码如下。importjava.io.*;classDemo2_9publicstaticv
18、oidmain(Stringargs)throwsIOExceptioncharch;按 1/2/3 数字键可得大奖 !");按空格键后回车可退出循环操作 .");while')/ 跳过回车键switch(ch)case'1':恭喜你得大奖,一辆汽车 !");break;case'2':不错呀,你得到一台笔记本电脑 !");break;case'3':没有白来,你得到一台冰箱 !");break;default:真不幸,你没有奖品 ! 下次再来吧。 ");3) 编译源程序。示。3
19、. dowhile循环语句练习(1) 程序功能:求1 + 2+100之和,并将求和表达式与所求的和显示出来。2)程序源代码如下。classDemo2_10publicstaticvoidmain(Stringargs)intn=1,sum=0;dosum+=n+;while(n<=100);+ .+100="+sum);3) 编译并运行程序,结果如图 2.10所示。思考题】1. 程序的复合结构以及变量的使用范围2. 选择语句,哪些具有嵌套关系?3.while和dowhile的区别。(4)在命令提示符窗口运行程序,然后分别按1、2、3、r结果如图2.9所实验三 Java 语言面向
20、对象基础实验目的通过编程和上机实验理解 Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方 法的特性,掌握面向对象程序设计的方法,了解类的继承性和多态性的作 用,了解接口的作用。实验要求1、编写一个体现面向对象思想的程序;2、编写一个创建对象和使用对象的方法的程序;3、编写一个显示当前日期和时间的程序;4、编写不同成员变量修饰方法的程序;5、编写不同成员方法修饰方法的程序;6、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;7、编写体现类的多态性(成员方法重载、构造方法重载)的程序;实验内容1、 设计类来描述真实客观世界中的事
21、物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改(1)程序功能: 设计一个用来描述汽车的类, 使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。(2) 程序源代码如下。publicclassEX P3_1privateStri ngow nerName;/ 车主姓名privatefloatcurS peed;/ 当前车速privatefloatcurDirI nDegree;/ 当前方向盘转向角度publicEX P3_1(Stri ngow nerName)this.
22、ow nerName=ow nerName;p ublicEX P3_1(Stri ngow nerNamefloats peedfloatdirl nDegree)this(ow nerName);this.curS peed二s peed;this.curDirI nDegree二dirl nDegree;publicStri nggetOw nerName()/提供对车主姓名的访问retur nown erName;publicfloatgetCurDirl nDegree()/提供对当前方向盘转向角度的访问returncurDirI nDegree;publicfloatgetCurS
23、 peed()/提供对当前车速的访问retu rn curS peed;publicvoidcha ngeS peed(floatcurS peed)/提供改变当前的车速this.curS peed二curS peed;publicvoidst op ()/提供停车this.curS peed=O;(3) 编译源程序。2、创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)(1) 创建类EXP3_1对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。(2) 程序代码如下。publicclassEX P3_2p ub
24、licstaticvoidma in( Stri ngargs)EXP 3_1car= newEX 卩3_1成龙",200f,25f);车主姓名:"+car.getOw nerName();当前车速:"+car.getCurS peed();当前转向角度:"+car.getCurDirlnDegree();car.cha ngeS peed(80);在调用 changeSpeed(80)后,车速变为:"+car.getCurSpeed();car.st op ();在调用 stop()后,车速变为:"+car.getCurSpeed(
25、);(3)编译并运行程序。3、编写显示当前时间和日期的程序(3) 程序功能:该程序通过使用一个自定义类 Time,实现显示当前日期和时间的功能。(4) 程序代码如下。importclassTimeprivateCale ndart;privatei nty,m,d,hh,mm,ss;Time()t二Cale ndar.get In sta nce();y=t.get(t .Y EAR);m二t.get(t.MONTH)+1;d二t.get(t.DATE);hh二t.get(t.HOUR_OF_DA Y);mm二t.get(t.MINUTE);ss=t.get(t.SECOND);p ublic
26、Stri nggetDate()retumy+"年"+m+"月"+d+"日"p ublicStri nggetTime()returnhh+"时"+mm+分"+ss+"秒"publicclassEX P3_3p ublicstaticvoidma in( Stri ngargs)Timet 二n ewTime();("当前日期:"+t.getDate();("当前时间:"+t.getTime();(5) 编译并运行程序。4、使用修饰符来限定类的成
27、员变量或成员方法的属性有时需要公幵一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下:P ublic private protected packagestaticfi naltra nsie ntvolatile不同修饰符的访问控制权限如表 3.1所示。表3.1程序功能:通过两个类StaticDemo、EXP3_说明静态变量/方法与实例变量/方法的区别。(2) 程序源代码如下。classStaticDemo static intx;inty;p ublicstatic in tgetX()return(x);p ublicstaticvoi
28、dsetX(i ntn ewX) x=n ewX;p ublicvoidset Y(i ntnewY)y二newY;p ublic in tgetY()return(y);classEX P3_4p ublicstaticvoidma in( Stri ngargs)/编译出错StaticDemoa 二n ewStaticDemo();StaticDemob 二n ewStaticDemo();a.setX(1);/编译出错a.setY(2);b.setX (4);/编译出错b.setY(4);(3) 对上面的源程序进行编译,会出现出错提示。(4) 查找程序中的错误,将源程序中的出错语句删除或
29、使用解释符/隐藏起来,例如,实例变量 y="+StaticDemo.get Y();(5) 重新编译并运行该程序。5、调用方法时参数传递的练习在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在Java中,方法中的参数传递可以分为传值调用或对象方法调用等方式。传值调用即传递的参数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。所以,如果不想改变参数的值,可以采用传值调用的方法。如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。5.1、编写一个传值调用的程
30、序(1) 程序功能:程序首先给整型变量 x和y赋一个初值10,然后使用传值调用方式调用方法ff1对X和y做乘方及输出x和y的乘方值,最后再输出X和y的乘方值。(2) 程序源代码如下。classEX P3_5p ublicstaticvoidma in( Stri ngargs)in tx=10,y=10;ff1(x,y);y="+y);staticvoidff1(i ntp assX,i ntp ass Y)p assX 二p assX* passX;p ass Y=p ass Y*p ass Y;p ass Y二"+p ass Y);(3) 编译并运行。5.2、编写一个调
31、用对象方法的程序(1)程序功能:通过调用对象的方法在方法调用后修改了成员变量的值。(2)程序源代码如下。classEX P3_6p ublicstaticvoidma in( Stri ngargs)Powerp二newPo wer();p.ff2(10,10);方法调用后 x="+p.x+",y="+p.y);class Powerin tx=10,y=10;voidff2(i ntp assX,i ntp ass Y)初始时 x="+x+",y="+y);x=p assX* passX;y=p ass Y*p ass Y;p ro
32、tectedStri ngxm;/具有保护修饰符的成员变量编译并运行。6、类的继承性练习新类可从现有的类中产生,并保留现有类的成员变量和方法并可 根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象 就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass ),这个新类称为子类。Java提供了一个庞大的类库让幵发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现
33、了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。6.1、创建将被继承的类 (1)程序源代码如下。publicclassEX P3_7p rotectedi ntxh;voidsetdata(Stri ngm,i nth)/设置数据的方法xm=m;xh=h;publicvoid prin t()/输出数据的方法"+xh);(2)编译源程序。6.2、创建将被继承的类 (1)程序功能:通过EXP3_洪产生子类EXP3_8其不仅具有父类的成员变量xm (姓名)、xh (学号),还定义了
34、新成员变量 xy (学院)、xi(系)。在程序中调用了父类的print方法,同时可以看出子类也具有该方法。(2)程序源代码如下。classEX P3_8exte ndsEX P3_7/在此处增加代表定义成员变量col(学院),dep(系),都设为保护类p ublicstaticvoidma in( Stri ngargs)EXP3_7p 1= newEX P3_7();p1.setdata(" 李四",12321);p1. prin t();EXP 3_8s1= newEX P3_8();s1.setdata("张三",12345);/ 调用父类的成员方
35、法s1.col="成都信息工程学院"/访问本类的成员变量s1.deP二"计算机系"/访问本类的成员变量s1. prin t();"+s1.xy+","+s1.xi);(4) 编译并运行。6.3、了解成员方法的覆盖方式通过继承子类可以继承父类中所有可以被子类访问的成员方法,但如果子类的方法与父类方法同名,则不能继承,此时称子类的方法 覆盖了父类的方法,简称为方法覆盖(override )。方法覆盖为子类 提供了修改父类成员方法的能力。例如,子类可以修改层层继承下来 的Object根类的toString方法,让它输出一些更有用的
36、信息。下面的 程序显示了在子类Circle中添加toString方法,用来返回圆半径和圆 面积信息。(1)编写覆盖Object类toString方法的程序文件EXP3_9.java,源代码如下。classCircleprivatei ntradius;Circle(i ntr)setRadius(r);p ublicvoidsetRadius(i ntr)radius二r;p ublic in tgetRadius()returnradius;p ublicdoublearea()retum3.14159*radius*radius;p ublicStri ngtoStri ng()retur
37、n"圆半径:"+getRadius()+"圆面积:"+area();publicclassEX P3_9p ublicstaticvoidma in( Stri ngargs)Circlec= newCircle(10);编译并运行。6.4 this、super 和super()的使用(1)程序功能:程序功能:说明this、super和super()的用法。程序首先定义Point (点)类,然后创建点的子类 Line (线)。最后通过LX3_10类输出线段的长度。程序中通过super(a,b)调用父类Point的构造方法为父类的x和y赋值。在子类Line
38、的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this引用,告诉编译器是为当前类的成员变量赋值。在length和toString方法中使用父类成员变量时,使用 sup er引用,告诉编译器使用的是父类的成员变量。(2)程序源代码如下。class Pointp rotectedi ntx,y;Poi nt(i nta,i ntb)set Poin t(a,b);p ublicvoidset Poin t(i nta,i ntb)x=a;y=b;classL in eexte ndsPointp rotectedi ntx,y;Lin e(i nta,i ntb)sup
39、 er(a,b);setLi ne(a,b);p ublicvoidsetL in e(i ntx,i nty)this.x二x+x;this.y二y+y;p ublicdoublele ngth()in tx1=s up er.x,y1=s up er.y,x2=this.x,y2=this.y;retur nM ath.sqrt(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);publicStri ngtoStri ng()return"直线端点:"+super.x+","+super.y+""+x+",&
40、quot;+y+"直线长度:"+this.le ngth();publicclassEX P3_10p ublicstaticvoidma in( Stri ngargs)Lin eli ne=n ewL in e(50,50);(3)编译并运行。7、类的多态性练习类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和 类型不同。这种现象称为类的多态。多态使程序简洁,为程序员带来 很大便利。在00中,当程序要实现多个相近的功能时,就给相应的方 法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用 方法时不
41、论传递什么参数,只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载(overload )上,包括成员方法和构造 方法的重载。7.1、方法的重载(1) 程序功能:使用同名方法对两个、三个或用数组容纳的一组数进行排序(2) 程序源代码如下。Classi ntSortp ublicStri ngsort(i nta,i ntb)if(a>b)retur na+""+b;elseretur nb+""+a;p ublicStri ngsort(i nta,i ntb,i ntc)in tswa p;/*增加相应代码实现3个数的排序*/ ret
42、urna+""+b+""+c;p ublicStri ngsort(i ntarr)Stri ngs=""in tswa p;for(i nti=O;ivarr.le ngth;i+)for(i ntj=0;jvarr.le ngth-1;j+)if(arrj>arrj+1)swa p二arrj;arrj=arrj+1;arrj+1=swa p;for(i nti=0;ivarr.le ngth;i+)s=s+arri+""returns;全部为空r ");publicclassEX P3_11p
43、ublicstaticvoidma in( Stri ngargs)In tSorts 二n ewi ntSort();in ta=30,b=12,c=40;in tarr=34,8,12,67,44,98,52,23,16,16;("两个数的排序结果:"+s.sort(a,b);("三个数的排序结果:"+s.sort(a,b,c);("数组的排序结果:"+s.sort(arr);(3) 编译并运行。7.2、构造函数的重载构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别, 但它不是方法,也不是类的成员。
44、因此,构造方法不能直接调用,只能由 neW操作符调用。构造方法对于类是卜分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。(1) 程序源代码如下。classR un DemoprivateStri nguserName, password;Ru nDemo()Run Demo(Stri ngn ame)userName 二n ame;Run Demo(Stri ngn ame,Stri ngp wd)this (n ame);p assword 二pwd;check();voidcheck()St
45、rings二n ull;if(userName!二 nu ll)s="用户名:”+userName;elses="用户名不能为空!"ifs=s+" 口令无效!"elses=s+" 口令.*"publicclassEX P3_12p ublicstaticvoidma in( Stri ngargs)n ewR un Demo();newRu nDem o张三”);newRu nDemo( null,"李四");n ewR un Demo王 五(2) 编译并运行。实验四包、接口与异常处理开发语言及实现平台或
46、实验环境 】Windows2000或 XP, JDK1.6,记事本或 UltraEdit实验目的】1. 了解 Java 中包(p ackage)、接口( in terface )和异常处理exception )的作用。2. 掌握包、接口、异常处理的设计方法。实验要求】1. 了解Java系统包的结构。2. 掌握创建自定义包的方法。3. 掌握使用系统接口的技术和创建自定义接口的方法。4. 理解系统异常处理的机制和创建自定义异常的方法。实验步骤】一.了解并使用 Java 的系统包1. API包、接口、异常处理的作用包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java语言提供系
47、统包,其中包含了大量的类,可以在编写Java程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。)即应用包又称类库或 API包,所谓 API (ApplicationProgramInterface 程序接口。API包一方面提供丰富的类与方法供大家使用,如画图形、播 放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功 能。所有 JavaAPI 包都以“ java. ”开头,以区别用户创建的包。接口解决了 Java不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。处理程序运行时的错误和设计程序同样重要,只有能够完善处理运行 时出错的程序,软件系统才能
48、长期稳定地运行,异常处理就是说明如何处 理程序运行时出错的问题。2上网浏览 JavaAPI 文档在地址上,可以看到Java系统提供的JavaAPI文档,类文档的内容主 要是:类层次、类及用途描述、成员变量列表、构造方法列表、成员方法 列表、从类层次上继承的方法列表、成员变量的详细说明、构造方法详细说明、成员方法详细说明。在这里可以看到Java提供的JavaAPI文档的最新内容二创建并使用自定义包1自定义包的声明方式<package><自定义包名 >声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类 都属于这个包。2创建自定义包 Mypackage在存放源程序
49、的文件夹中建立一个子文件夹Mypackage。例如,在E:javademo ”文件夹之中创建一个与包同名的子文件夹 MypackageE:javademoMypackage ),并将编译过的 class 文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量 classpath 的路径,例如: D:javajdk1.6lib;E:javademo 3在包中创建类(1)YMD.java程序功能:在源程序中,首先声明使用的包名 Mypackage,然后创建YM类,该类具有计算今年的年份,可以输出一个带有年月日的 字符串的功能。(2)编写YMD.java文件,源代码如下。package
50、Mypackage;/ 声明存放类的包importjava.util.*;/引用 java.util 包61publicclassLX4_1_YMD privateintyear,month,day;publicstaticvoidmain(Stringarg3) publicLX4_1_YMD(inty,intm,intd) year=y;month=(m>=1)&(m<=12)m:1);day=(d>=1)&(d<=31)d:1);publicLX4_1_YMD() this(0,0,0);返回publicstaticintthisyear() re
51、turnCalendar.getInstance().get(Calendar.YEAR);/当年的年份publicintyear() returnyear;/ 返回年份publicStringtoString()returnyear+"-"+month+"-"+day;/返回转化为字符串的年 - 月-(3) 编译LX4_1_YMD.java文件,然后将LX4_1_YMD.class文件存放到Myp ackage文件夹中。3.编写使用包 Mypackage中 LX4_1_YM类的程序1) LX4_2.java 程序功能: 给定某人姓名与出生日期, 计算该
52、人年龄,并输出该人姓名,年龄,出生日期。程序使用了LX4_1_YM的方法来计算年龄。2)编写 LX4_2.java 程序文件,源代码如下。impo rtMy package.LX4_1_YMD;/ 弓 I用 My package包中的 LX4_1_YMD publicclassLX4_2privateStringname;privateLX4_1_YMDbirth;publicstaticvoidmain(Stringargs)LX4_2 a=newLX4_2(" 张驰",1990,1,11);a.output();publicLX4_2(Stringn1,LX4_1_YM
53、Dd1)name=n1;birth=d1;publicLX4_2(Stringn1,inty,intm,intd) this(n1,newLX4_1_YMD(y,m,d);/ 初始化变量与对象返回当前年publicintage()/ 计算年龄returnLX4_1_YMD.thisyear()-birth.year();/与出生年的差即年龄publicvoidoutput()姓名 :"+name);出生日期 :"+birth.toString();今年年龄 :"+age();3)编译并运行程序,结果如图 4.3 所示。三使用接口技术1接口的定义与作用接口可以看作是
54、没有实现的方法和常量的集合。接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法。使用接口是为了解决Java语言中不支持多重继承的问题。单继承可使语言本身结构简单,层次清楚,易于管理,安全可靠,避免冲突。但同时限制了语言的功能。为了在实际应用中实现多重继承的功能,Java使用了接口技术,个类可以实现多个接口以达到使用公用常量和一些常用的方法。2.实现A和B两个接口。interfaceAadd( inta,intb);/ 实现两个数相加add On e(i nta);/实现 a 加 1 操作interfaceBSort(inta,intb,intc,intd);/实现 4个数
55、排序1)编写实现接口的程序文件 .2)编译并运行四了解异常处理机制1错误与异常在程序执行期间,会有许多意外的事件发生。例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。据错误的性质将运行错误分为错误与异常两种类型。1)错误程序进入了死循环或内存溢出,这类现象称为错误或致命性错误。错误只能在编程阶段解决,运行时程序本身无法解决,只能依靠其它程序干预,否则会一直处于一种不正常的状态。2)异常运算时除数为 0,或操作数超出数据范围,打开一个文件时发现文件不存在, 网络连接中断等等, 这类运行错误现象称为异常。 对于异常情况,可在源程序中加入异常处理代码,当程序出现异常时,由异常处理代码调整程序运行流程,使程序仍可正常运行直到正常结束。由于异常是可以检测和处理的,所以产生了相应的异常处理机制。而错误处理一般由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色生态猪场经营权转让合同3篇
- 二零二五年度事业单位合同模板:事业单位图书资料数字化加工合同3篇
- 二零二五年度贫困户社会保障帮扶合同3篇
- 二零二五年度无人驾驶汽车技术研发合同2篇
- 2025年度航空航天零部件承包合同3篇
- 2025年度光伏发电设施巡检服务外包合同范本正规范本3篇
- 二零二五年度体育场馆专业保洁与设施维护合同2篇
- 二零二五年度文化创意产业实习生岗位合同范本3篇
- 二零二五年度国有企业经营权转让合同2篇
- 2024年中国瓷质过滤管市场调查研究报告
- 中国特色大国外交和推动构建人类命运共同体
- 《风电场项目经济评价规范》(NB-T 31085-2016)
- 粗粒土和巨粒土最大干密度记录表及报告
- 爱丽丝梦游仙境话剧中英文剧本(共6页)
- 书法少年宫活动记录
- 表冷器性能计算书
- 走遍德国 A1(课堂PPT)
- 照明公司个人工作总结范文
- 热控专业施工质量验收范围划分表
- 2022年sppb简易体能状况量表
- 各类传染病个案调查表集
评论
0/150
提交评论