系统类库调用 JAVA编程综合实验报告.docx
- 文档编号:10596382
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:28
- 大小:1.20MB
系统类库调用 JAVA编程综合实验报告.docx
《系统类库调用 JAVA编程综合实验报告.docx》由会员分享,可在线阅读,更多相关《系统类库调用 JAVA编程综合实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
系统类库调用JAVA编程综合实验报告
成绩:
JAVA编程B综合实验报告
实验名称:
系统类库调用
实验时间:
2012年6月2日星期六
JAVA编程B综合实验报告
一、实验名称
系统类库调用
二、实验目的
1、ava中包(package)、接口(interface)和异常处理(exception)的作用。
2、接口、异常处理的设计方法。
三、实验环境配置
WindowsXP、JDK1.6与Eclipse3.5
四、实验记录
1)创建Applet应用小程序
2)创建对象并使用对象
3)使用修饰符
五、代码分析
packageMypackage;//声明存放类的包
importjava.util.*;//引用java.util包
publicclassJAVA_B_4_1YMD{
privateintyear,month,day;
publicstaticvoidmain(String[]arg3){
}
publicJAVA_B_4_1YMD(inty,intm,intd){//初始化
year=y;
month=(((m>=1)&(m<=12))?
m:
1);
day=(((d>=1)&(d<=31))?
d:
1);
}
publicJAVA_B_4_1YMD(){//无参量的构造函数
this(0,0,0);
}
publicstaticintthisyear(){
returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份
}
publicintyear(){
returnyear;//返回年份
}
publicStringtoString(){
returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日
}
}
importMypackage.JAVA_B_4_1YMD;//引用Mypackage包中的JAVA_B_4_1YMD类
publicclassJAVA_B_4_2{
privateStringname;
privateJAVA_B_4_1YMDbirth;
publicstaticvoidmain(Stringargs[]){
JAVA_B_4_2a=newJAVA_B_4_2("张驰",1990,1,11);
a.output();
}
publicJAVA_B_4_2(Stringn1,JAVA_B_4_1YMDd1){
name=n1;
birth=d1;
}
publicJAVA_B_4_2(Stringn1,inty,intm,intd){
this(n1,newJAVA_B_4_1YMD(y,m,d));//初始化变量与对象
}
publicintage()//计算年龄
{
returnJAVA_B_4_1YMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄
}
publicvoidoutput(){
System.out.println("姓名:
"+name);
System.out.println("出生日期:
"+birth.toString());
System.out.println("今年年龄:
"+age());
}
}
publicclassJAVA_B_4_3{
publicstaticvoidmain(String[]arg3){
System.out.println("这是一个异常处理的例子\n");
try{
inti=10;
i/=0;
}catch(ArithmeticExceptione){//异常处理
System.out.println("异常是:
"+e.getMessage());
}finally{//不管有无异常都执行
System.out.println("finally语句被执行");
}
}
}
publicclassJAVA_B_4_4{
publicstaticvoidmain(String[]args){
System.out.println(“这是一个异常处理的例子\n”);
try{
inti=10;
i/=0;
}
catch(IndexOutOfBoundsExceptione){
System.out.println("异常是:
"+e.getMessage());
}
finally{
System.out.println("finally语句被执行");
}
}
}
publicclassJAVA_B_4_5{
publicstaticvoidmain(String[]args){
try{
inta=args.length;
System.out.println("\na="+a);
intb=42/a;
intc[]={1};
c[42]=99;
}catch(ArithmeticExceptione){
System.out.println("发生了被0除:
"+e);
}catch(ArrayIndexOutOfBoundsExceptione){
System.out.println("数组下标越界:
"+e);
}
}
}
publicclassJAVA_B_4_6{
staticvoidthrowProcess(){
try{
thrownewNullPointerException("空指针异常");
}catch(NullPointerExceptione){
System.out.println("\n在throwProcess方法中捕获一个"+e.getMessage());
throwe;
}
}
publicstaticvoidmain(Stringargs[]){
try{
throwProcess();
}catch(NullPointerExceptione){
System.out.println("再次捕获:
"+e);
}
}
}
importjava.io.*;
publicclassJAVA_B_4_7{
publicstaticvoidmain(Stringargs[])throwsIOException{
FileInputStreamfis=newFileInputStream("a3.txt");
}
}
importjava.io.*;
publicclassJAVA_B_4_8{
staticvoidmathod()throwsIllegalAccessException{
System.out.println("\n在mathod中抛出一个异常");
thrownewIllegalAccessException();
}
publicstaticvoidmain(Stringargs[]){
try{
mathod();
}catch(IllegalAccessExceptione){
System.out.println("在main中捕获异常:
"+e);
}
}
}
classJAVA_B_4_9{
staticvoidmathodA(){
try{
System.out.println("\nmathodA抛出一个异常");
thrownewRuntimeException();
}finally{
System.out.println("执行mathodA的finally");
}
}
staticvoidmathodB(){
try{
System.out.println("mathodB正常返回");
return;
}finally{
System.out.println("执行mathodB的finally");
}
}
publicstaticvoidmain(Stringargs[]){
try{
mathodA();
}catch(Exceptione){
mathodB();
}
}
}
六、实验过程记录
1)了解并使用Java的系统包
1、API包、接口、异常处理的作用
包是类和接口的集合。
利用包可以把常用的类或功能相似的类放在一个包中。
Java语言提供系统包,其中包含了大量的类,可以在编写Java程序时直接引用它们。
为便于管理和使用它们,将这些类分为了不同的包。
包又称类库或API包,所谓API(ApplicationProgramInterface)即应用程序接口。
API包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。
所有JavaAPI包都以“java.”头,以区别用户创建的包。
接口解决了Java不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。
处理程序运行时的错误和设计程序同样重要,只有能够完善处理运行时出错的程序,软件系统才能长期稳定地运行,异常处理就是说明如何处理程序运行时出错的问题。
2、上网浏览JavaAPI文档
在地址API文档,类文档的内容主要是:
类层次、类及用途描述、成员变量列表、构造方法列表、成员方法列表、从类层次上继承的方法列表、成员变量的详细说明、构造方法详细说明、成员方法详细说明。
在这里可以看到Java提供的JavaAPI文档的最新内容
2)创建并使用自定义包
1、自定义包的声明方式
声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
2、创建自定义包Mypackage
在存放源程序的文件夹中建立一个子文件夹Mypackage。
例如,在“E:
\javademo”文件夹之中创建一个与包同名的子文件夹Mypackage(E:
\javademo\Mypackage),并将编译过的class文件放入该文件夹中。
注意:
包名与文件夹名大小写要一致。
再添加环境变量classpath的路径,例如:
D:
\java\jdk1.6\lib;E:
\javademo
3、在包中创建类
(1)YMD.java程序功能:
在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。
(2)编写YMD.java文件,源代码如下。
packageMypackage;//声明存放类的包
importjava.util.*;//引用java.util包
publicclassJAVA_B_4_1YMD{
privateintyear,month,day;
publicstaticvoidmain(String[]arg3){
}
publicJAVA_B_4_1YMD(inty,intm,intd){
year=y;
month=(((m>=1)&(m<=12))?
m:
1);
day=(((d>=1)&(d<=31))?
d:
1);
}
publicJAVA_B_4_1YMD(){
this(0,0,0);
}
publicstaticintthisyear(){
returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份
}
publicintyear(){
returnyear;//返回年份
}
publicStringtoString(){
returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日
}
}
(3)编译JAVA_B_4_1YMD.java文件,然后将JAVA_B_4_1YMD.class文件存放到Mypackage文件夹中。
3、编写使用包Mypackage中JAVA_B_4_1YMD类的程序
(1)JAVA_B_4_2.java程序功能:
给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。
程序使用了JAVA_B_4_1YMD的方法来计算年龄。
(2)编写JAVA_B_4_2.java程序文件,源代码如下。
importMypackage.JAVA_B_4_1YMD;//引用Mypackage包中的JAVA_B_4_1YMD类
publicclassJAVA_B_4_2{
privateStringname;
privateJAVA_B_4_1YMDbirth;
publicstaticvoidmain(Stringargs[]){
JAVA_B_4_2a=newJAVA_B_4_2("张驰",1990,1,11);
a.output();
}
publicJAVA_B_4_2(Stringn1,JAVA_B_4_1YMDd1){
name=n1;
birth=d1;
}
publicJAVA_B_4_2(Stringn1,inty,intm,intd){
this(n1,newJAVA_B_4_1YMD(y,m,d));//初始化变量与对象
}
publicintage()//计算年龄
{
returnJAVA_B_4_1YMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄
}
publicvoidoutput(){
System.out.println("姓名:
"+name);
System.out.println("出生日期:
"+birth.toString());
System.out.println("今年年龄:
"+age());
}
}
(3)编译并运行程序,记录并分析程序结构及其运行结果。
3)使用接口技术
1、接口的定义与作用
接口可以看作是没有实现的方法和常量的集合。
接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法。
使用接口是为了解决Java语言中不支持多重继承的问题。
单继承可使语言本身结构简单,层次清楚,易于管理,安全可靠,避免冲突。
但同时限制了语言的功能。
为了在实际应用中实现多重继承的功能,Java使用了接口技术,一个类可以实现多个接口以达到使用公用常量和一些常用的方法。
2、实现MouseListener和MouseMotionListener两个接口
(1)编写实现接口的程序文件。
4)了解异常处理机制
1、错误与异常
在程序执行期间,会有许多意外的事件发生。
例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。
根据错误的性质将运行错误分为错误与异常两种类型。
(1)错误
程序进入了死循环或内存溢出,这类现象称为错误或致命性错误。
错误只能在编程阶段解决,运行时程序本身无法解决,只能依靠其它程序干预,否则会一直处于一种不正常的状态。
(2)异常
运算时除数为0,或操作数超出数据范围,打开一个文件时发现文件不存在,网络连接中断等等,这类运行错误现象称为异常。
对于异常情况,可在源程序中加入异常处理代码,当程序出现异常时,由异常处理代码调整程序运行流程,使程序仍可正常运行直到正常结束。
由于异常是可以检测和处理的,所以产生了相应的异常处理机制。
而错误处理一般由系统承担。
对于一个应用软件,异常处理机制是不可缺少的。
程序员必须在程序中考虑每一个可能发生的异常情况并进行处理,以保证程序在任何情况下都能正常运行。
事实证明,一个仔细设计了异常处理的程序,可以长时间的可靠运行,而不容易发生致命的错误,如程序被迫关闭、甚至系统终止等等。
所以学会进行异常情况处理对于想编写功能完善且具有实用价值的程序员来说是必不可少的。
2.异常发生的原因
(1)Java虚拟机检测到了非正常的执行状态,这些状态可能是由以下几种情况引起的:
·表达式的计算违反了Java语言的语义,例如整数被0除。
·在载入或链接Java程序时出错。
·超出了某些资源限制,例如使用了太多的内存。
(2)Java程序代码中的throw语句被执行。
(3)异步异常发生。
异步异常的原因可能有:
·Thread的stop方法被调用。
·Java虚拟机内部错误发生。
3、异常处理机制
发生异常后,怎么处理异常呢?
Java提供了异常处理机制来处理异常。
分为两个步骤:
(1)抛出异常
Java是这样规定的:
当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。
一个异常对象可以由Java虚拟机来产生,也可以由运行的方法生成。
异常对象中包含了异常事件类型、程序运行状态等必要信息。
(2)捕获异常
异常抛出后,运行时系统从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。
简单说异常处理机制就是:
当语义限制被违反时,将会抛出异常对象,并将引起程序流程从异常发生点转移到程序员指定的处理异常方法代码处进行异常处理。
5)异常对象的类型
在异常发生后,系统会产生一个异常事件,生成一个异常对象,有哪些异常对象呢?
这些异常对象来自哪些类呢?
Java中的异常类具有层次结构组织。
其中,Throwable类是Error错误类和Exception异常类的父类,它是Object的直接子类。
RuntimeException运行时异常类是Exception异常类的子类。
如图所示。
1、Exception异常类的子类
(1)RuntimeException运行时异常类,主要包括以下异常子类:
·ArithmeticException算术异常类:
表示遇到了异常的算术问题,例如被0整除。
·ArrayStoreException数组下标越界异常类:
试图把与数组类型不相符的值存人数组。
·ClassCastException类型强制转换异常类:
试图把一个对象的引用强制转换为不合适的类型。
·IndexOutOfBoundsException下标越界异常类:
下标越界。
·NullPointerException空指针异常类:
试图使用一个空的对象引用。
·SecurityException违背安全原则异常类:
检测到了违反安全的行为。
(2)NoSuchMethodException方法未找到异常
(3)java.awt.AWTException图形界面异常类
(4)java.io.IOException输入输出异常类
·IOException:
申请I/O操作没有正常完成。
·EOFException:
在输入操作正常结束前遇到了文件结束符。
·FileNotFoundException:
在文件系统中,没有找到由文件名字符串指定的文件。
(5)Exception异常类的其它子类
·EmptyStackException:
试图访问一个空堆栈中的元素。
·NoSuchFieldException:
试图访问一个不存在的域。
·NoSuchMethodException:
试图访问不存在的方法。
·ClassNotFoundException:
具有指定名字的类或接口没有被发现。
·CloneNotSupportedException:
克隆一个没有实现Cloneable接口的类。
·IllegalAccessException:
试图用给出了完整的路径信息的字符串加载一个类,但是当前正在执行的方法无法访问指定类,因为该类不是public类型或在另一个包中。
·InstantiationException:
试图使用Class的newInstance方法创建一个对象实例,但指定的对象没有被实例化,因为它是一个接口、抽象类或者一个数组。
·InterruptedException:
当前的线程正在等待,而另一个线程使用了Thread的interrupt方法中断了当前线程。
2、Error错误类的子类
(1)VirtualMachineError虚拟机错误
✧OutOfMemoryError内存溢出错误
✧StackOverflowError栈溢出错误
(2)LinkageError链接错误
✧NoClassDefNotFoundError类定义未找到错误
(3)java.awt.AWTError图形界面错误
6)try…catch语句处理异常
1、异常类型匹配的处理方式
(1)程序功能:
首先说明"这是一个异常处理的例子",然后在程序中主动产生一个ArithmeticException类型被0除的异常,并用catch语句捕获这个异常。
最后通过ArithmeticException类的对象e的方法getMessage给出异常的具体类型并显示出来。
(2)编写使用try…catch语句处理异常的程序文件JAVA_B_4_3.java,源代码如下。
publicclassJAVA_B_4_3{
publicstaticvoidmain(String[]arg3){
System.out.println("这是一个异常处理的例子\n");
try{
inti=10;
i/=0;
}catch(ArithmeticExceptione){
System.out.println("异常是:
"+e.getMessage(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统类库调用 JAVA编程综合实验报告 系统 调用 JAVA 编程 综合 实验 报告