Java网络程序设计 课件 单元5 常用类应用_第1页
Java网络程序设计 课件 单元5 常用类应用_第2页
Java网络程序设计 课件 单元5 常用类应用_第3页
Java网络程序设计 课件 单元5 常用类应用_第4页
Java网络程序设计 课件 单元5 常用类应用_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

常用类应用单元五JavaAPI文档使用String类StringBuffer类目录CONTENTS123异常处理45.1JavaAPI文档的使用Java语言提供了一些核心类库供java程序员直接调用,程序员无须关注类库中方法的实现细节,只需关注其输入、输出和功能等,这些类库统称为API。在一个文档中统一定义类库中方法的输入、输出和功能描述,这个文档就是API文档。JavaAPI文档的文档结构5.1JavaAPI文档的使用通过索引查找指定类的其他方法,单击超链接可以查看更详细的说明。感谢观看,下次再见常用类应用单元五JavaAPI文档使用String类StringBuffer类目录CONTENTS123异常处理45.2String类String类表示字符串,Java程序中的所有字符串(例如"雷静")都作为此类的对象。String类不是基本数据类型,它是一个类。因为对象的初始化默认值是null,所以String类对象的初始化默认值也是null。String字符串是常量,字符串的值在创建之后不能更改。String类使用了final关键字修饰,不能被继承。5.2.1String类的概念

字符串的增加可通过concat()方法实现classTestString2{publicstaticvoidmain(String[]args){StringstuName1=newString("王云");stuName1.concat("同学");System.out.println(stuName1);}}

对于stuName1并没有受到修改,该方法会返回一个新的String字符串5.2.1String类的概念

字符串的“修改”引用类型变量重赋值通过创建一个新String字符串,并让stuName1指向了这个新的String字符串实现字符串的“修改”,但实际上只是引用的变化,而不可变是指内存中已经创建的String字符串不可变。5.2.2String类的使用

前面我们使用publicStringconeat(Stringstr)方法连接字符串,我们还可以通过“+”进行String字符串的连接。publicclassTestStringConcat{publicstaticvoidmain(String[]args){//使用"+"进行字符串连接System.out.println("使用'+'进行字符串连接");Strings1="您好";//创建一个新字符串用来连接两个字符串,并让s1指向这个新字符串s1=s1+",蒋老师!"System.out.println(s1);//使用publicStringconcat(Stringstr)方法连接System.out.println("使用publicStringconcat(Stringstr)方法连接");Strings2="您好";//创建一个新字符串用来连接两个字符串,但没有变量指向这个新字符串s2.concat(",田老师!");//创建一个新字符串用来连接两个字符串,并让s3指向这个新字符串Strings3=s2.concat(",田老师!");System.out.println(s2);System.out.println(s3);}}案例:运行结果:5.2.2String类的使用

当我们需要比较两个字符串时,常用的两个方法是运算符“==”和String类的equals方法。publicclassTestStringEquals{publicstaticvoidmain(Strmg[]args){Strings1="Java基础";Strings2="Java基础";System.out.println(s1==s2);//返回trueSystem.out.println(s1.equals(s2));//返回trueStrings3=newString("前端技术");Strings4=newString("前端技术");System.out.println(s3==s4);//返回falseSystem.out.println(s3.equals(s4));//返回true}}案例:运行结果:String类的常用方法(部分):public

char

charAt(int

index)

从字符串中返回指定索引处的字符值。public

int

length()

返回此字符串的长度。这里需要和获取数组长度区别开,获取数组长度是通过“数组名.length”获取的。public

int

indexOf(String

str)

返回指定子字符串在此字符串中第一次出现处的索引。public

int

indexOf(String

str,int

fromIndex)

返回指定子字符串在此字符串屮第一次出现处的索引,从指定的索引开始搜索。public

boolean

equalsIgnoreCase(String

another)

将此String与另一个String比较,不区分大小写。public

String

replace(char

oldChar,char

newChar)

返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。5.2.2String类的使用感谢观看,下次再见常用类应用单元五JavaAPI文档使用String类StringBuffer类目录CONTENTS123异常处理45.3.1StringBuffer类的使用StringBuffer类也可以存放字符串。与String类不同的是,StringBuffer字符串代表的是可变的字符序列,可以对字符串对象的内容进行修改。以下是StringBuffer类最常用的构造方法:●StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。●StringBuffer(Stringstr):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。StringBuffer字符串使用场合为经常需要对字符串内容进行修改操作的场合。以下是StringBuffer类的常用方法:publicStringBufferappend(Stringstr)

将指定的字符串追加到此字符序列中。publicStringBufferappend(StringBufferstr)

将指定的StringBuffer字符串追加到此序列中。publicStringBufferappend(char[]str)

将字符数组参数的字符串表示形式追加到此序列中。publicStringBufferappend(char[]str,intoffset,intlen)

将字符数组参数的子数组的字符串表示形式追加到此序列中,从索引offset开始,此字符序列的长度将增加len。publicStringBufferappend(doubled)

将double类型参数的字符串表示形式追加到此序列中。publicStringBufferappend(Objectobj)

将Object参数的字符串表示形式追加到此序列中。publicStringBufferinsert(intoffset,Stringstr)

将字符串插入到此字符序列中,offset表示插入位置。5.3.1StringBuffer类的使用5.3.1StringBuffer类的使用publicclassTestStringBuffer{publicstaticvoidmain(String[]args){System.out.println("创建StringBuffer对象");//使用StringBuffer()构造器创建对象StringBufferstrB1=newStringBuffer();System.out.println("newStringBuffer()创建对象的长度为:"+strB1.length());//使用StringBuffer(Stringstr)构造器创建对象StringBufferstrB2=newStringBuffer("柳海龙");System.out.println("newStringBuffer(\"柳海龙\")创建对象的长度为:"+strB2.length());System.out.println("strB2里的内容为:"+strB2);//使用append、insert方法追加、插入字符串System.out.println("使用append方法追加字符串");strB2.append(",您好!");//在最后增加",您好"!System.out.println(strB2);StrB2.insert(3,"工程师");//从第4个位置开始,插入"工程师"System.out.println(strB2);}}案例:运行结果:5.3.2StringBuffer内存模型StringBuffer是一个内容可变的字符序列,或者说它是一个内容可变的字符串类型。当使用StringBufferstrB1=newStringBuffer(“柳海龙”);语句创建StringBuffer对象时,内存结构示意图如图一所示。当使用strBl.append(“工程师”)方法时,将之前创建的StringBuffer对象的内容“柳海龙”修改成了“柳海龙工程师”,内存结构示意图如图二所示。图一:StringBuffer内存结构示意图一图二:StringBuffer内存结构示意图二感谢观看,下次再见常用类应用单元五JavaAPI文档使用String类StringBuffer类目录CONTENTS123异常处理45.4异常处理

根据在程序运行过程中,经常会出现一些意外的情况,这些意外会导致程序出错或者崩溃,从而影响程序的正常执行,如果不能很好地处理这些意外情况,程序的稳定性就会受到质疑。在Java语言中,将这些程序意外称为异常,出现异常时的处理称为异常处理,合理的异常处理可以使整个项目更加稳定,也使项目中正常的逻辑代码和错误处理的代码实现分离,便于代码的阅读和维护。5.4.1异常概述publicclassTestEx{publicstaticvoidmain(String[]args){Stringteachers[]={"柳海龙","孙传杰","孙悦"};for(inti=0;i<4;i++){System.out.println(teachers[i]);}System.out.println("演示完毕!");}}示例代码:运行结果:程序出错的原因很简单,程序员定义的数组长度是3,而在使用数组时,却访问了下标为3的第4个数组元素,所以程序出现异常。5.4.1异常概述所有异常都继承自java.lang.Throwable类,Throwable类有两个直接子类,Error类和Exception类。Java异常的层次结构如图所示。Java异常层次结构图5.4.1异常概述Exception,Error表示Java应用程序本身无法恢复的严重错误,而不是这种Java应用程序无法恢复的严重错误,我们称为异常。异常可分为运行时异常(RuntimeException)和检查时异常(CheckedException)两种。RuntimeException,运行时异常即程序运行时抛出的异常,不要求程序员在编程时必须对这些异常进行处理,也能编译通过。前面数组下标越界异常就是运行时异常。CheckedException,检查时异常又称为非运行时异常,这样的异常要求程序员必须在编程时进行处理,否则就会编译不通过。例如我们在前面的学习过程中,经常在编译的时候发生类找不到的情况,这就是一个典型的检查时异常。5.4.2异常处理所谓异常处理,就是发生异常之后,程序员要求程序该如何操作。Java对异常的处理采取的是抛出、捕获的机制,即由一段可能抛出异常的程序抛出异常(也可能正常执行,不抛出异常),在这段程序外有专门的异常处理程序进行处理,针对抛出的不同类型的异常捕获后进行处理,这就是Java异常处理机制。try{//可能抛出异常的语句块}catch(SomeExceptionle)//SomeException1特指某些异常,非Java中具体异常,下同{//当捕获到Somefixception1类型的异常时执行的语句块}catch(SomeException2e){//当捕获到SomeException2类型的异常时执行的语句块}finally{//无论是否发生异常都会执行的代码}语法格式:5.4.2异常处理则修改实例代码如下:publicclassTestEx10{publicstaticvoidmain(Strmg[]args){try{Stringteachers[]={"柳海龙","孙传杰","孙悦"};for(inti=0;i<4;i++){System.out.println(teachers[i]);}}catch(Exceptione){System.out.println("数组下标越界,请修改程序!");//return; //finally语句块仍然执行//System.exit(l);//直接退出Java虚拟机,finally语句块不再执行}finally{System.out.println("显示完毕!");}}}运行结果:5.4.3异常使用注意事项我们在捕获异常的时候,应该按照“从小到大”的顺序捕获异常,这样才能保证逐层捕获,从而避免父类的大的异常进行了捕获,导致子类的小的异常无法进行捕获的情况。异常类异常说明ArrayIndexOutOfBoundsException在访问数组元素时超过了一开始声明这个数组时的范围ArithmeticException发生在数字的算术运算时的异常NullPointerException调用了未经初始化的对象或者是不存在的对象,或是访问或修改null对象的属性。ClassNotFoundException没有找到类IllegalArgumentException向方法传递了一个不合法或不正确的参数InputMismatchException表明Scanner获取的内容与期望类型的模式不匹配,或者该内容超出期望类型的范围。IllegalAccessException当前正在执行的方法无法访问指定类、属性、方法或构造方法的定义ClassCastException试图将对象强制转换为不是实例的子类SQLException提供关于数据库访问错误或其他错误信息的异常IOException发生某种I/O异常常见的异常5.4.4抛出异常在Java语言中,可以使用throw关键字手工抛出一个异常。publicclassTestEx15{publicstaticvoidmain(String[]args){System.out.print("Now");try{System.out.print("is");thrownewNullPointerException("the"); //抛出

一个空指针异常,指定信息为“the”//System.out.print("此句不会被执行!");}catch(NullPointerExceptione){ //捕获抛出的空指针异常System.out.print(e.getMessage());}System.out.print(utime.\n");}}示例代码:运行结果:5.4.5自定义异常类自定义异常,顾名思义,就是程序员自己定义的异常。当Java类库中的异常不能满足程序需求时,程序员可以自己定义并使用异常。由于Exception类是Java中所有异常类的父类,所以我们定义自定义异常类时,通常继承自该类。现在我们定义一个自定义异常类AgeException,它有一个构造函数和一个toString()方法,具体代码如下://自定义异常类,处理年龄大于120或小于0的PersonclassAgeExceptionextendsException{privateStringmessage;publicAgeException(intage) //自定义异常类构造方法{message="年龄设置为:"+age+"不合理!";}publicStringt

温馨提示

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

评论

0/150

提交评论