java程序设计基础异常处理和常用系统类(精品)

上传人:aa****6 文档编号:54861048 上传时间:2018-09-20 格式:PPT 页数:72 大小:202.50KB
返回 下载 相关 举报
java程序设计基础异常处理和常用系统类(精品)_第1页
第1页 / 共72页
java程序设计基础异常处理和常用系统类(精品)_第2页
第2页 / 共72页
java程序设计基础异常处理和常用系统类(精品)_第3页
第3页 / 共72页
java程序设计基础异常处理和常用系统类(精品)_第4页
第4页 / 共72页
java程序设计基础异常处理和常用系统类(精品)_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《java程序设计基础异常处理和常用系统类(精品)》由会员分享,可在线阅读,更多相关《java程序设计基础异常处理和常用系统类(精品)(72页珍藏版)》请在金锄头文库上搜索。

1、第4章 异常处理和常用系统类,4.1 异常处理机制 4.2 String类和StringBuffer类 4.3 AWT 4.4 Java applet,4.1 异常处理机制,4.1.1 什么是异常用任何一种计算机语言设计的程序在运行时都可能出现各种错误,常见的错误如除数为0、文件不存在、文件不能打开、数组下标超过界限、内存不够用等。对于这种在运行中出现的错误,计算机系统中通常有两种处理办法。,(1)由计算机系统本身直接检测程序错误,遇到错误时使程序终止运行。这种处理方法的优点是使程序设计比较简单。但是,对程序错误一概地采用终止运行办法,显然过于简单化。因为有些情况下,完全可以通过其他途径保持程

2、序继续运行。比如,由于文件名不符合要求而无法打开文件,那么,可以提示用户输入一个新的文件名,从而使程序继续往下运行。,(2)由程序员在程序设计中兼顾错误检测、错误信息显示和出错处理。这种处理方法的优点是减少了中途终止程序运行的可能性。但是,要求程序员在程序设计中不仅将精力用于正常处理过程,还要精心考虑错误检测和处理,这会使程序变得复杂。并且,这类错误检测往往是多数程序中重复甚至在一个程序中多次重复。而另一方面,如果程序中某处忽略了应有的检测,又将引起程序总体结果的错误。,Java采用异常处理机制来处理程序运行中的错误。按照这种机制,将程序运行中的所有错误都看成一种异常,通过对语句块的检测,一个

3、程序中所有的异常被收集起来放在程序的某一段中去处理。在Java系统中,专门设置了一个调用栈,此栈中装有指向异常处理方法的指针。,在程序运行时,系统会把收集到的异常和异常处理指针所指的处理类型逐个比较,如果找到相符的类型,那么就转向相应的方法处理,如没有在调用栈中找到相应的类型指针,则终止程序运行,并显示解释信息。,在Java程序中,异常一般由以下两种原因引起。 (1)程序中存在非法操作,最简单的例子就是除数为0的除法操作。这种原因常常是程序员出于无意或大意造成的,所以称为隐式异常。常见的隐式异常可以通过java.lang包中的Throwable类的子类Error处理。,(2)程序员在程序中使用

4、了throw语句引起的异常。这种异常是程序员出于某种考虑有意安排的,所以称为显式异常。在throw语句中,都会指出处理显式异常的对象,这些对象都是由java.lang包的类Throwable的子类Exception再派生的子类生成的,每个对象完成对某种异常的处理功能,这些对象综合起来实现各种异常处理。,比如Array-IndexOutOfBoundsException子类处理数组越界异常,IOException子类处理输入输出异常,而ArithmeticException子类处理除数为0导致的算术异常等。,4.1.2 异常的层次结构 4.1.3 异常的处理 4.1.4 创建自己的异常,4.2

5、String类和StringBuffer类,4.2.1 String类 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, int numChars);,第1个构造方法生成一个空串。 第2个构造方法生成一个字符数组。 第3个构造方法生成一个字符串

6、,这个字符串是从字符数组chars 中提取的,具体讲,即从chars 数组的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。,第4个构造方法是以字节数组的形式生成一个字符串,数组中存放字符串各字符对应的ASCII码。 第5个构造方法也是从字节数组生成一个字符串。具体讲,就是以字节数组ascii 的 startIndex处开始,共提取numChars个字符构成字符串,如为ASCII 字符,则hiByte的值为0。,例4-5:import javax.swing.*; public class StringConstructors public static vo

7、id main( String args )char charArray = b, i, r, t, h, , d, a, y ;,byte byteArray = (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 Progr

8、amming!“ );s1 = new String();s2 = new String( s );s3 = new String( charArray );s4 = new String( charArray, 6, 3 );s5 = new String( byteArray, 4, 4 );s6 = new String( byteArray );s7 = new String( buffer );,output = “s1 = “ + s1 +“ns2 = “ + s2 +“ns3 = “ + s3 +“ns4 = “ + s4 +“ns5 = “ + s5 +“ns6 = “ + s

9、6 +“ns7 = “ + s7;JOptionPane.showMessageDialog( null, output,“Demonstrating String Class Constructors“,,JOptionPane.INFORMATION_MESSAGE );System.exit( 0 ); 运行结果见图4-5。,图4-5,程序分析:String类提供了9个构造函数,以便使用各种方法初始化String对象。例题共演示了7种。 程序“s1 = new String()”实例化一个新的String对象,并使用String类的缺省构造函数将它赋给引用s1。新的String对象没有字

10、符(即空串),长度为0。,“s2=new String(s);”例化一个新的String对象,并使用String类的拷贝构造函数,将它赋给引用s2。s被当作参数传送给构造函数,新的String对象包含了String对象s中的字符的拷贝。 在大多数情况下,没有必要拷贝已有的String对象。String对象是不变的,一旦创建后就不能改变它们的内容(字符串)。,而且,如果有一个或多个引用指向某个String对象,垃圾收集器就不能回收该对象。也就是说,String引用既不能用于修改String对象,也不能删除String对象。这一点与C语言或C语言是不同的。 “s3=new String(charA

11、rray);”实例化一个新的String对象,并使用以字符数组为参数的String类构造函数,将它赋给引用s3。新的String对象包含了数组中字符的拷贝。,“s4=new String(charArray,6,3);”实例化一个String对象,使用以一个字符数组和两个整数为参数的String类构造函数,将它赋给引用s4。第2个参数指定了在数组中拷贝字符的起始位置(offset)。第3个参数指定了数组中拷贝字符的数目(count),新的String对象包含了数组中指定字符的拷贝。如果offset或count参数指定的所取元素超过了字符数组的界限,就会产生 StringIndexOutOfBo

12、undsException 的例外处理。,“s5=new String(byteArray,4,4);”实例化一个新的String对象,使用以一个byte数组和两个整数为参数的String类构造函数,将它赋给引用s5。第2和第3个参数分别指定了offset和count。新的String对象包含了数组中指定 byte 的拷贝。如果offset或count参数指定的所取元素超过了byte数组的界限,就会产生一个StringIndexOutOfBoundsException的例外处理。,“s6=new String(byteArray);”实例化一个新的String对象,使用以一个byte数组为参数

13、的 String类构造函数,将它赋给引用s6。新的String对象包含了数组中byte的拷贝。 “s7=new String(buffer);”实例化一个新的String对象,使用以StringBuffer为参数的String类构造函数,将它赋给引用s7。StringBuffer是一个可动态改变大小和内容的字符串。新的String对象包含了StringBuffer中字符的拷贝。,2String类的length、charAt和getChars方法下面的例子演示了String 类的length、charAt和getChars方法,它们分别用于确定String 类的长度、取String某一指定位置的

14、字符以及取String某一子串。,3String类的字符串比较 例4-7:import javax.swing.JOptionPane; public class StringCompare public 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

15、 = “s1 = “ + s1 + “ns2 = “ + s2 +“ns3 = “ + s3 + “ns4 = “ + s4 + “nn“;,if ( s1.equals( “hello“ ) )output += “s1 equals “hello“n“;elseoutput += “s1 does not equal “hello“n“; if ( s1 = “hello“ )output += “s1 equals “hello“n“;elseoutput += “s1 does not equal “hello“n“;,if ( s3.equalsIgnoreCase( s4 ) )o

16、utput += “s3 equals s4n“;elseoutput += “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.regionMatches( 0, s4, 0, 5 ) )output += “First 5 characters of s3 and s4 matchn“;elseoutput +=“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“;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号