java程序设计基础异常处理和常用系统类(精品)_第1页
java程序设计基础异常处理和常用系统类(精品)_第2页
java程序设计基础异常处理和常用系统类(精品)_第3页
java程序设计基础异常处理和常用系统类(精品)_第4页
java程序设计基础异常处理和常用系统类(精品)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 4章 异常处理和常用系统类4.1 异常处理机制异常处理机制4.2 String类和类和 StringBuffer类类4.3 AWT4.4 Java applet4.1 异常处理机制 4.1.1 什么是异常用任何一种计算机语言设计的程序在运行时都可能出现各种错误,常见的错误如除数为 0、文件不存在、文件不能打开、数组下标超过界限、内存不够用等。对于这种在运行中出现的错误,计算机系统中通常有两种处理办法。( 1)由计算机系统本身直接检测程序错误,遇到错误时使程序终止运行。这种处理方法的优点是使程序设计比较简单。但是,对程序错误一概地采用终止运行办法,显然过于简单化。因为有些情况下,完全可以通过其他途径保持程序继续运行。比如,由于文件名不符合要求而无法打开文件,那么,可以提示用户输入一个新的文件名,从而使程序继续往下运行。( 2)由程序员在程序设计中兼顾错误检测、错误信息显示和出错处理。这种处理方法的优点是减少了中途终止程序运行的可能性。但是,要求程序员在程序设计中不仅将精力用于正常处理过程,还要精心考虑错误检测和处理,这会使程序变得复杂。并且,这类错误检测往往是多数程序中重复甚至在一个程序中多次重复。而另一方面,如果程序中某处忽略了应有的检测,又将引起程序总体结果的错误。Java采用异常处理机制来处理程序运行中的错误。按照这种机制,将程序运行中的所有错误都看成一种异常,通过对语句块的检测,一个程序中所有的异常被收集起来放在程序的某一段中去处理。在Java系统中,专门设置了一个调用栈,此栈中装有指向异常处理方法的指针。在程序运行时,系统会把收集到的异常和异常处理指针所指的处理类型逐个比较,如果找到相符的类型,那么就转向相应的方法处理,如没有在调用栈中找到相应的类型指针,则终止程序运行,并显示解释信息。在 Java程序中,异常一般由以下两种原因引起。( 1)程序中存在非法操作,最简单的例子就是除数为 0的除法操作。这种原因常常是程序员出于无意或大意造成的,所以称为隐式异常。常见的隐式异常可以通过java.lang包中的 Throwable类的子类 Error处理。( 2)程序员在程序中使用了 throw语句引起的异常。这种异常是程序员出于某种考虑有意安排的,所以称为显式异常。在 throw语句中,都会指出处理显式异常的对象,这些对象都是由 java.lang包的类Throwable的子类 Exception再派生的子类生成的,每个对象完成对某种异常的处理功能,这些对象综合起来实现各种异常处理。比如 Array-IndexOutOfBoundsException子类处理数组越界异常, IOException子类处理输入输出异常,而 ArithmeticException子类处理除数为 0导致的算术异常等。 4.1.2 异常的层次结构 4.1.3 异常的处理 4.1.4 创建自己的异常4.2 String类和 StringBuffer类 4.2.1 String类 1 String类的主要构造方法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个构造方法生成一个字符串,这个字符串是从字符数组 chars 中提取的,具体讲,即从 chars 数组的 startIndex位置开始提取字符,共提取 numChars个字符组成一个字符串。第 4个构造方法是以字节数组的形式生成一个字符串,数组中存放字符串各字符对应的 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 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 Programming!“ );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 = “ + s6 +“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对象没有字符(即空串),长度为 0。“s2=new String( s); ”例化一个新的String对象,并使用 String类的拷贝构造函数,将它赋给引用 s2。 s被当作参数传送给构造函数,新的 String对象包含了 String对象 s中的字符的拷贝。在大多数情况下,没有必要拷贝已有的String对象。 String对象是不变的,一旦创建后就不能改变它们的内容(字符串)。而且,如果有一个或多个引用指向某个String对象,垃圾收集器就不能回收该对象。也就是说, String引用既不能用于修改String对象,也不能删除 String对象。这一点与 C语言或 C 语言是不同的。“s3=new String( charArray); ”实例化一个新的 String对象,并使用以字符数组为参数的 String类构造函数,将它赋给引用s3。 新的 String对象包含了数组中字符的拷贝。“s4=new String( charArray, 6, 3); ”实例化一个 String对象,使用以一个字符数组和两个整数为参数的 String类构造函数,将它赋给引用 s4。 第 2个参数指定了在数组中拷贝字符的起始位置( offset)。 第3个参数指定了数组中拷贝字符的数目(count), 新的 String对象包含了数组中指定字符的拷贝。如果 offset或 count参数指定的所取元素超过了字符数组的界限,就会产生 StringIndexOutOfBoundsException 的例外处理。“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数组为参数的 String类构造函数,将它赋给引用 s6。 新的 String对象包含了数组中 byte的拷贝。“s7=new String( buffer); ”实例化一个新的 String对象,使用以 StringBuffer为参数的 String类构造函数,将它赋给引用 s7。 StringBuffer是一个可动态改变大小和内容的字符串。新的 String对象包含了StringBuffer中字符的拷贝。 2 String类的 length、 charAt和getChars方法下面的例子演示了 String 类的 length、 charAt和 getChars方法,它们分别用于确定 String 类的长度、取 String某一指定位置的字符以及取 String某一子串。 3 String类的字符串比较例 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 = “s1 = “ + s1 + “ns2 = “ + s2 +“ns3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论