《第5章常用类与异常处理.ppt》由会员分享,可在线阅读,更多相关《第5章常用类与异常处理.ppt(61页珍藏版)》请在优知文库上搜索。
1、Java实用教程(第3版)第第5章章 常用类与异常处理常用类与异常处理5.1 Object类类5.3 包装类包装类5.4 Math类类5.5 Random类类5.7 正则表达式正则表达式5.8 异常处理异常处理5.2 字符串类字符串类5.6 日期类日期类5.9 综合实例综合实例Java实用教程(第3版)5.1 Object类类5.1.1 equals()方法方法equals()方法用于判断一个对象是否等于另外一个对象,实际上是比较两个引用是否指向同一个对象。如果两个引用指向同一个对象,equals()方法才返回true。其方法的源代码为:public boolean equals(Object
2、 obj)return(this=obj);在实际编程中,更关心被比较的两个引用所指向的对象的状态(或属性)是否相同。许多Java类都重写了这个方法,如String、Data、基本数据类型的包装类。运算符“=”用来比较两个运算对象是否相等,这两个运算对象既可以是基本类型,也可以是引用类型。当两个运算对象都是引用类型时,那么这两个引用变量必须都引用同一个对象才返回true。“=”用于String对象表示比较的是否是同一个串对象,当用于比较两个字符串是否相等时,应使用equals()方法。【例例5.1】综合运用“=”和equals()方法。Java实用教程(第3版)5.1.2 hashCode()
3、方法方法散列码(hash code)是由对象导出的一个整型值,主要是将对象作为key,用于Hash表中,通常需要子类对该方法进行重写。常见的String类及基本数据类型的包装类如Integer、Long类等都已对HashCode()和equals()方法进行了重写,保证:若obj1.equals(obj2),则obj1.hashCode()=obj2.hashCode()。其含义是:若对象obj1和对象obj2按对象的状态(或属性或内容)是相等的,则它们的hashCode值应相同。即对象的hashCode值应由对象的状态决定的。例如,两个不同的String对象只要包含相同的字符序列,其hash
4、Code值就相同。【例例5.2】使用HashCode()方法生成对象的散列码。Java实用教程(第3版)5.1.3 toString()方法方法toString()方法返回对象的字符串表示,默认时,其格式为“类名对象的十六进制哈希码”。其方法的源代码如下:public String toString()return getClass().getName()+Integer.toHexString(hashCode();当Java系统处理对象时,每当需要将对象转成串时,都会自动调用该方法。当定义自己对象时,应该重写该方法,以返回自己对象有明确含义串的表示。许多Java类,如Date、String
5、、StringBuffer和包装类都重写了toString()方法,返回有实际意义的内容,例如下面的语句:System.out.println(new Object().toString();/显示java.lang.Object10b30a7System.out.println(new Integer(56).toString();/显示56System.out.println(new String(hello).toString();/显示hello以上语句等价于:System.out.println(new Object();/显示java.lang.Object10b30a7Syste
6、m.out.println(new Integer(56);/显示56System.out.println(new String(hello);/显示helloJava实用教程(第3版)5.1.3 toString()方法方法当System.out.println()方法的参数是Object类型时,println()方法会自动调用Object对象的toString()方法,然后显示toString()方法返回的字符串。【例例5.3】使用toString()方法显示字符串。TestToString.javaclass TestToString private String s=spring;pu
7、blic TestToString(String str)this.s=str+this.s;public static void main(String args)TestToString test=new TestToString(hibernate);System.out.println(test);System.out.println(test.s);public String toString()/重写Object类的toString()方法this.s=struts +this.s;return s;程序运行结果:struts hibernate spring struts hib
8、ernate spring Java实用教程(第3版)5.2 字符串类字符串类5.2.1 String类类一个字符串常量是用双引号括住的一串字符,如Hello。一个字符串常量是一个String对象。Java.lang.String类代表只读的不可修改的字符序列,两个字符串对象使用“+”或“+=”运算符,会产生新的字符串对象。若Java程序中有多处出现字符串常量Hello,则Java编译程序只创建一个String对象,所有的字符串常量Hello将使用同一个String对象,例如下面的语句:String s1=Hello;String s2=Hello;String s3=new String(H
9、ello);String s4=new String(Hello);则:s1与s2是同一个对象,而s1、s3与s4是三个不同的对象,尽管它们所表示的字符序列相等。String类的方法众多,有如下常用方法。int length():返回字符串的长度,例如下面的语句:String s1=“hello”;System.out.println(s1.length();/显示结果为5(2)char charAt(int index):返回指定索引处的char值,其中index的取值范围是0字符串长度-1,例如下面的语句:String s1=hello world;System.out.println(s
10、1.charAt(6);/显示结果为wJava实用教程(第3版)5.2.1 String类类(3)int compareTo(String another):按Unicode码值的大小逐字符比较两个字符串的大小。如果源串较小,则返回一个小于0的值,如果相等则返回0,否则返回一个大于0的值,例如下面的语句:System.out.println(pareTo(Hello);/显示-4System.out.println(pareTo(hello);/显示0System.out.println(HpareTo(hello);/显示1(4)String concat(String str):把字符串s
11、tr附加在当前字符串的末尾,例如下面的语句:String str=“hello”;String str2=str.concat(“world”);System.out.println(“str”);/显示 hello System.out.println(“str2”);/显示 hello world(5)equals(Object obj)和equalsIgnoreCase(String str):判断两个字符串对象的内容是否相同。两个方法的区别在于:equals()方法区分字母的大小写,而 equalsIgnoreCase()方法不区分字母的大小写,例如下面的语句:String str1=
12、”hello”;String str2=”Hello”;System.out.println(str1.equals(str2);/显示trueSystem.out.println(str1.equalsIgnoreCase(str2);/显示falseJava实用教程(第3版)5.2.1 String类类(6)int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。int la
13、stIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。例如下面的语句:String s1=hello world;System.out.println(s1.indexOf(l);/显示2System.out.println(s1.indexOf(world);/显示6System.out.println(s1.lastIndexOf(l);/显示9System.out.println(s1.lastIndexOf(world);/显示6(7)String toUpperCase():将此String 中的所有字符都转换为大写。String toLower
14、Case():将此String中的所有字符都转换为大写。String trim():返回字符串的副本,忽略前导空白和尾部空白。例如下面的语句:String s1=Welcome to Java word;String s2=hello world ;System.out.println(s1.toUpperCase();/显示WELCOME TO JAVA WORDSystem.out.println(s1.toLowerCase();/显示welcome to java wordSystem.out.println(s2.trim();/显示hello worldJava实用教程(第3版)5
15、.2.1 String类类(8)String substring(int beginIndex):返回一个新的字符串,该子字符串从指定索引处的字符开始,直到此字符串末尾。String substring(int beginIndex,int endIndex):返回一个新字符串,该子字符串从指定的beginIndex处开始,直到索引endIndex-1处的字符。例如下面的语句:String s1=Welcome to Java word;System.out.println(s4.substring(11);/显示Java wordSystem.out.println(s1.substring
16、(11,15);/显示Java(9)static String valueOf():把基本数据类型转换为String类型,例如下面的语句:int i=123;String s1=String.valueOf(i);System.out.println(s1);/显示字符串123(10)String split(String regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。Java实用教程(第3版)5.2.1 String类类【例例5.4】统计字符串中的单词个数,单词之间用空格分开。StatisticWords.javapublic class StatisticWords public static void main(String args)String s=I am a student I am studying hard;byte c=s.getBytes();/把字符串转换为字节数组int word=0;/判断是否是单词的标识int num=0;/统计单词的个数int i=c.length;for(int j=0;ji;j+)if(cj=32)/是空格w