JAVA程序设计基础第4章异常处理和常用系统类.ppt
《JAVA程序设计基础第4章异常处理和常用系统类.ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计基础第4章异常处理和常用系统类.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 异常处理和常用系统类异常处理和常用系统类4.1 异常处理机制异常处理机制4.2 String类和类和StringBuffer类类4.3 AWT4.4 Java applet4.1 异常处理机制异常处理机制4.1.14.1.1什么是异常什么是异常用用任任何何一一种种计计算算机机语语言言设设计计的的程程序序在在运运行行时时都都可可能能出出现现各各种种错错误误,常常见见的的错错误误如如除除数数为为0、文文件件不不存存在在、文文件件不不能能打打开开、数数组组下下标标超超过过界界限限、内内存存不不够够用用等等。对对于于这这种种在在运运行行中中出出现现的的错错误误,计计算算机机系系统统中中通常
2、有两种处理办法。通常有两种处理办法。(1)由计算机系统本身直接检测程)由计算机系统本身直接检测程序错误,遇到错误时使程序终止运行。这序错误,遇到错误时使程序终止运行。这种处理方法的优点是使程序设计比较简单。种处理方法的优点是使程序设计比较简单。但是,对程序错误一概地采用终止运行办但是,对程序错误一概地采用终止运行办法,显然过于简单化。因为有些情况下,法,显然过于简单化。因为有些情况下,完全可以通过其他途径保持程序继续运行。完全可以通过其他途径保持程序继续运行。比如,由于文件名不符合要求而无法打开比如,由于文件名不符合要求而无法打开文件,那么,可以提示用户输入一个新的文件,那么,可以提示用户输入
3、一个新的文件名,从而使程序继续往下运行。文件名,从而使程序继续往下运行。(2)由程序员在程序设计中兼顾错)由程序员在程序设计中兼顾错误检测、错误信息显示和出错处理。这种误检测、错误信息显示和出错处理。这种处理方法的优点是减少了中途终止程序运处理方法的优点是减少了中途终止程序运行的可能性。但是,要求程序员在程序设行的可能性。但是,要求程序员在程序设计中不仅将精力用于正常处理过程,还要计中不仅将精力用于正常处理过程,还要精心考虑错误检测和处理,这会使程序变精心考虑错误检测和处理,这会使程序变得复杂。并且,这类错误检测往往是多数得复杂。并且,这类错误检测往往是多数程序中重复甚至在一个程序中多次重复。
4、程序中重复甚至在一个程序中多次重复。而另一方面,如果程序中某处忽略了应有而另一方面,如果程序中某处忽略了应有的检测,又将引起程序总体结果的错误。的检测,又将引起程序总体结果的错误。Java采采用用异异常常处处理理机机制制来来处处理理程程序序运运行行中中的的错错误误。按按照照这这种种机机制制,将将程程序序运运行行中中的的所所有有错错误误都都看看成成一一种种异异常常,通通过过对对语语句句块块的的检检测测,一一个个程程序序中中所所有有的的异异常常被被收收集集起起来来放放在在程程序序的的某某一一段段中中去去处处理理。在在Java系系统统中中,专专门门设设置置了了一一个个调调用用栈栈,此此栈中装有指向异
5、常处理方法的指针。栈中装有指向异常处理方法的指针。在程序运行时,系统会把收集到的异在程序运行时,系统会把收集到的异常和异常处理指针所指的处理类型逐个比常和异常处理指针所指的处理类型逐个比较,如果找到相符的类型,那么就转向相较,如果找到相符的类型,那么就转向相应的方法处理,如没有在调用栈中找到相应的方法处理,如没有在调用栈中找到相应的类型指针,则终止程序运行,并显示应的类型指针,则终止程序运行,并显示解释信息。解释信息。在在Java程序中,异常一般由以下两种程序中,异常一般由以下两种原因引起。原因引起。(1)程序中存在非法操作,最简单的)程序中存在非法操作,最简单的例子就是除数为例子就是除数为0
6、的除法操作。这种原因常的除法操作。这种原因常常是程序员出于无意或大意造成的,所以常是程序员出于无意或大意造成的,所以称为隐式异常。常见的隐式异常可以通过称为隐式异常。常见的隐式异常可以通过java.lang包中的包中的Throwable类的子类类的子类Error处理。处理。(2)程序员在程序中使用了)程序员在程序中使用了throw语语句引起的异常。这种异常是程序员出于某句引起的异常。这种异常是程序员出于某种考虑有意安排的,所以称为显式异常。种考虑有意安排的,所以称为显式异常。在在throw语句中,都会指出处理显式异常的语句中,都会指出处理显式异常的对象,这些对象都是由对象,这些对象都是由jav
7、a.lang包的类包的类Throwable的子类的子类Exception再派生的子类再派生的子类生成的,每个对象完成对某种异常的处理生成的,每个对象完成对某种异常的处理功能,这些对象综合起来实现各种异常处功能,这些对象综合起来实现各种异常处理。理。比比如如Array-IndexOutOfBoundsException子子类类处处理理数数组组越越界界异异常常,IOException子子类类处处理理输输入入输输出出异异常常,而而ArithmeticException子子类类处处理理除数为除数为0导致的算术异常等。导致的算术异常等。4.1.24.1.2异常的层次结构异常的层次结构4.1.34.1.3
8、异常的处理异常的处理4.1.44.1.4创建自己的异常创建自己的异常4.2 String类和类和StringBuffer类类4.2.14.2.1StringString类类1String类的主要构造方法类的主要构造方法String类类有有多多个个构构造造方方法法,主主要要的的有有下列下列5个:个:String();String(char chars);String(char chars,int startIndex,int numChars);String(byte ascii,int hiByte);String(byte ascii,int hiByte,int startIndex,in
9、t numChars);第第1个构造方法生成一个空串。个构造方法生成一个空串。第第2个构造方法生成一个字符数组。个构造方法生成一个字符数组。第第3个构造方法生成一个字符串,这个个构造方法生成一个字符串,这个字符串是从字符数组字符串是从字符数组chars 中提取的,具中提取的,具体讲,即从体讲,即从chars 数组的数组的startIndex位置位置开始提取字符,共提取开始提取字符,共提取numChars个字符组个字符组成一个字符串。成一个字符串。第第4个构造方法是以字节数组的形式生个构造方法是以字节数组的形式生成一个字符串,数组中存放字符串各字符成一个字符串,数组中存放字符串各字符对应的对应的
10、ASCII码。码。第第5个构造方法也是从字节数组生成一个构造方法也是从字节数组生成一个字符串。具体讲,就是以字节数组个字符串。具体讲,就是以字节数组ascii 的的 startIndex处开始,共提取处开始,共提取numChars个个字符构成字符串,如为字符构成字符串,如为ASCII 字符,则字符,则hiByte的值为的值为0。例例4-5:import javax.swing.*;public class StringConstructors public static void main(String args)char charArray=b,i,r,t,h,d,a,y;byte byte
11、Array=(byte)n,(byte)e,(byte)w,(byte),(byte)y,(byte)e,(byte)a,(byte)r;StringBuffer buffer;String s,s1,s2,s3,s4,s5,s6,s7,output;s=new String(hello);buffer=new StringBuffer(Welcome to Java Programming!);s1=new String();s2=new String(s);s3=new String(charArray);s4=new String(charArray,6,3);s5=new String
12、(byteArray,4,4);s6=new String(byteArray);s7=new String(buffer);output=s1=+s1+ns2=+s2+ns3=+s3+ns4=+s4+ns5=+s5+ns6=+s6+ns7=+s7;JOptionPane.showMessageDialog(null,output,Demonstrating String Class Constructors,JOptionPane.INFORMATION_MESSAGE);System.exit(0);运行结果见图运行结果见图4-5。图图4-5程程序序分分析析:String类类提提供供了了9
13、个个构构造造函函数数,以以便便使使用用各各种种方方法法初初始始化化String对对象象。例题共演示了例题共演示了7种。种。程程序序“s1=new String()”实实例例化化一一个个新新的的String对对象象,并并使使用用String类类的的缺缺省省构构造造函函数数将将它它赋赋给给引引用用s1。新新的的String对对象象没没有字符(即空串),长度为有字符(即空串),长度为0。“s2=new String(s););”例化一个新的例化一个新的String对象,并使用对象,并使用String类的拷贝构造函类的拷贝构造函数,将它赋给引用数,将它赋给引用s2。s被当作参数传送给被当作参数传送给构
14、造函数,新的构造函数,新的String对象包含了对象包含了String对对象象s中的字符的拷贝。中的字符的拷贝。在大多数情况下,没有必要拷贝已有在大多数情况下,没有必要拷贝已有的的String对象。对象。String对象是不变的,一旦对象是不变的,一旦创建后就不能改变它们的内容(字符串)。创建后就不能改变它们的内容(字符串)。而且,如果有一个或多个引用指向某而且,如果有一个或多个引用指向某个个String对象,垃圾收集器就不能回收该对对象,垃圾收集器就不能回收该对象。也就是说,象。也就是说,String引用既不能用于修改引用既不能用于修改String对象,也不能删除对象,也不能删除String
15、对象。这一对象。这一点与点与C语言或语言或C语言是不同的。语言是不同的。“s3=new String(charArray););”实实例化一个新的例化一个新的String对象,并使用以字符数对象,并使用以字符数组为参数的组为参数的String类构造函数,将它赋给引类构造函数,将它赋给引用用s3。新的。新的String对象包含了数组中字符的对象包含了数组中字符的拷贝。拷贝。“s4=new String(charArray,6,3);”实实例例化化一一个个String对对象象,使使用用以以一一个个字字符符数数组组和和两两个个整整数数为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给
16、引引用用s4。第第2个个参参数数指指定定了了在在数数组组中中拷拷贝贝字字符符的的起起始始位位置置(offset)。第第3个个参参 数数 指指 定定 了了 数数 组组 中中 拷拷 贝贝 字字 符符 的的 数数 目目(count),新新的的String对对象象包包含含了了数数组组中中指指定定字字符符的的拷拷贝贝。如如果果offset或或count参参数数指指定定的的所所取取元元素素超超过过了了字字符符数数组组的的界界限限,就就会会产产生生 StringIndexOutOfBoundsException 的的例例外外处理。处理。“s5=new String(byteArray,4,4);”实实例例化
17、化一一个个新新的的String对对象象,使使用用以以一一个个byte数数组组和和两两个个整整数数为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给引引用用s5。第第2和和第第3个个参参数数分分别别指指定定了了offset和和count。新新的的String对对象象包包含含了了数数组组中中指指定定 byte 的的拷拷贝贝。如如果果offset或或count参参数数指指定定的的所所取取元元素素超超过过了了byte数数组组 的的 界界 限限,就就 会会 产产 生生 一一 个个StringIndexOutOfBoundsException的的例例外外处理。处理。“s6=new Stri
18、ng(byteArray);”实实例例化化一一个个新新的的String对对象象,使使用用以以一一个个byte数数组组为为参参数数的的 String类类构构造造函函数数,将将它它赋赋给给引引用用s6。新新的的String对对象象包包含含了了数数组组中中byte的拷贝。的拷贝。“s7=new String(buffer);”实实例例化化一一个个新新的的String对对象象,使使用用以以StringBuffer为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给引引用用s7。StringBuffer是是一一个个可可动动态态改改变变大大小小和和内内容容的的字字符符串串。新新的的Strin
19、g对对象象包包含含了了StringBuffer中字符的拷贝。中字符的拷贝。2 String类类 的的 length、charAt和和getChars方法方法下下面面的的例例子子演演示示了了String 类类的的length、charAt和和getChars方方法法,它它们们分分别别用用于于确确定定String 类类的的长长度度、取取String某某一一指指定定位位置置的字符以及取的字符以及取String某一子串。某一子串。3String类的字符串比较类的字符串比较例例4-7:import javax.swing.JOptionPane;public class StringCompare pu
20、blic static void main(String args)String s1,s2,s3,s4,output;s1=new String(hello);s2=new String(good bye);s3=new String(Happy Birthday);s4=new String(happy birthday);output=s1=+s1+ns2=+s2+ns3=+s3+ns4=+s4+nn;if(s1.equals(hello)output+=s1 equals hellon;else output+=s1 does not equal hellon;if(s1=hello)
21、output+=s1 equals hellon;else output+=s1 does not equal hellon;if(s3.equalsIgnoreCase(s4)output+=s3 equals s4n;else output+=s3 does not equal s4n;output+=pareTo(s2)is +pareTo(s2)+pareTo(s1)is +pareTo(s1)+pareTo(s1)is +pareTo(s1)+pareTo(s4)is +pareTo(s4)+pareTo(s3)is +pareTo(s3)+nn;if(s3.regionMatche
22、s(0,s4,0,5)output+=First 5 characters of s3 and s4 matchn;else output+=First 5 characters of s3 and s4 do not matchn;if(s3.regionMatches(true,0,s4,0,5)output+=First 5 characters of s3 and s4 match;else output+=First 5 characters of s3 and s4 do not match;JOptionPane.showMessageDialog(null,output,Dem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序设计 基础 异常 处理 常用 系统
限制150内