Java SE应用程序设计
第九章 精通常用的Java类
张利国 中科院新科海 v512工作室
jobedu
新科海
本章学习目标
1 2 3 4 5 java.lang.Object类 字符串相关类型 封装类 日期/时间相关类型 数学相关类型
Java SE应用程序设计
jobedu
2
新科海
Java SE应用程序设计
Object类
java.lang.Object类是所有Java类的最高层次父类,该类 提供了面向对象编程技术的基本机制。 重要方法列表:
hashCode()方法 toString()方法 equals()方法 finalize()方法 clone()方法 wait()方法 notify()/notifyAll()方法
jobedu
3
新科海
Java SE应用程序设计
hashCode()方法
public class Person{ private int age; public Person(int age){ this.age = age; } //… } public class TestHashCode{ public static void main(String[] args){ Person p1 = new Person(18); Person p2 = new Person(18); int handle1 = p1.hashCode(); System.out.println(handle1); System.out.println(Integer.toHexString(handle1)); System.out.println(p1); System.out.println("----------------"); System.out.println(p2.hashCode()); } } jobedu
输出结果: 11077203 a90653 Person@a90653 ---------------14576877
4
新科海
Java SE应用程序设计
toString()方法
方法格式: public String toString() { … } 方法功能:以字符串形式返回当前对象的有关信息,在 Object类的原始定义中,所返回的是对象所属的类型名称 及其哈希码。 当使用System.out.println()方法直接打印输出引用类型变量 时,println()方法中会先自动调用其toString()方法,再将所 返回的字符串信息输出。 在进行String与其它类型数据的连接操作时,自动调用 toString()方法,基本类型数据转换为String类型时,调用 了对应封装类的toString()方法。 可以根据需要在用户定义类型中重写toString()方法。
jobedu
5
新科海
重写toString()方法
Java SE应用程序设计
public class Person{ private int age; public Person(int age){ this.age = age; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public String toString(){ return "This is an instance of Person,age = " + age; } } public class TestOverride{ public static void main(String[] args){ Person p1 = new Person(18); System.out.println(p1.hashCode()); System.out.println(p1); //等价于 System.out.println(p1.toString()); } }
输出结果: 11077203 This is an instance of Person,age = 18 This is an instance of Person,age = 18
6
jobedu
新科海
Java SE应用程序设计
equals()方法
方法格式:
public boolean equals(Object obj) {… }
功能:比较引用类型数据的等价性 等价标准:引用类型比较引用,基本类型比较值。 equals()方法与==操作符的区别: equals()方法只能比较引用类型数据,而"=="可以比较 引用类型及
基本类型数据; equals()方法存在特例:对File(第10.4.1节)、String、 Date(第9.4.1节)及封装类(第9.3节)等类型来说,是比较 类型及对象的内容而不考虑引用的是否为同一实例。 可以根据需要,在用户定义类中重写其equals()方法, 以改变其等价性评价标准。
jobedu
7
新科海
使用equals()方法
例9-3: Person.java TestEquals.java 例9-4: TestEquals2.java
Java SE应用程序设计
对比使用"=="和equals()方法
重写equals()方法,实现用户定制等价性标准
例9-5 Person.java TestEquals3.java
jobedu
8
新科海
Java SE应用程序设计
finalize()方法
方法格式:
protected void finalize() throws Throwable {…}
方法功能:Java运行时环境中的垃圾收集器在销毁一 个对象之前,会自动调用该对象的finalize()方法,然 后才释放对象的内存空间。 方法用途:是在子类中重写,以加入所需的逻辑代码 来配置系统资源或执行其他清除操作。 使用举例:
例9-6 finalize()方法效果演示 Person.java TestFinalize.java
jobedu
9
新科海
Java SE应用程序设计
clone()方法
方法格式:
protected native Object clone() throws CloneNotSupportedException;
方法功能:对象拷贝。 要 进 行 “ 克 隆 ” 的 对 象 所 属 的 类 必 须 实 现 java.lang. Cloneable接口。 使用举例:
例9-7 实现简单的克隆操作 Person.java TestClone.java
浅度拷贝和深度拷贝
jobedu
10
新科海
字符串相关类型 1. 2. 3. 4.
String类 StringBuffer类 StringBuilder类 StringTokenizer类
Java SE应用程序设计
jobedu
11
新科海
Java SE应用程序设计
String类
java.lang.String类对象表示不可修改的Unicode编码字 符串。 方法说明:
构造方法 字符串连接、转换和截断
concat() replace() substring() toLowerCase() toUpperCase() trim()
检索和查找功能
charAt() startsWith() indexOf() lastIndexOf() compareTo() length()
内容比较
equals() equalsIgnoreCase()
jobedu
12
新科海
Java SE应用程序设计
StringBuffer类
StringBuffer类对象保存可修改的Unicode字符序列。 构造方法:
StringBuffer() StringBuffer(int capacity) StringBuffer(String initialString)
主要功能方法:
append() insert() reverse() setCharAt()
用法举例
例9-11 TestStringBuffer.java
jobedu
13
新科海
Java SE应用程序设计
StringBuilder类
JDK5.0以后引入,该类能够提供与StringBuffer 相 同的功能,二者区别:
StringBuffer类是线程安全的,而StringBuilder则不是, 即不保证其对象的同步性,在多线程环境中是不安全 的。 StringBuilder在性能上要比 StirngBuffer 好一些。
练习
将 例 9 - 1 1 代 码 中 的 StringBuffer 类 直 接 换 成 StringBuilder,自行测试其用
法。
jobedu
14
新科海
Java SE应用程序设计
StringTokenizer类
java.util.StringTokenizer类的功能是将当前字符串 按照默认或指定的分隔符分解为多个片段。 构造方法:
public StringTokenizer(String str) public StringTokenizer(String str, String delim) public StringTokenizer(String str, String delim, boolean returnDelims)
主要功能方法:
public boolean hasMoreTokens() public String nextToken()
用法举例:
例9-12 TestStringTokenizer.java
jobedu
15
新科海
分解字符串的新方法
Java SE应用程序设计
从JDK1.4开始,Sun公司推荐开发者使用一种新的 字符串分解方式——String类的split()方法:
public class TestStringSplit{ public static void main(String args[]){ String s = "阳光:沙滩:海浪:仙人掌"; ring s = "阳光:沙滩:海浪:仙人掌"; results = s.split(":"); (String each: results) { ystem.out.println(each); t.println(each); println(each);
输出结果: 阳光 沙滩 海浪 仙人掌
jobedu
16
新科海
封装类
Java SE应用程序设计
针对八种基本定义相应的引用类型—封装类。
基本数据类型 boolean byte short int long char float double 封装类 Boolean Byte Short Integer Long Character Float Double
jobedu
17
新科海
使用封装类
public class TestWrapper{ public static void main(String args[]){ Integer t1 = new Integer(314); Integer t2 = new Integer("314"); int i = t1.intValue(); System.out.println(i); System.out.println(t1 == t2); System.out.println(t1.equals(t2)); System.out.println(t1.toString(
上一篇:
Javascript脚本常用代码(全)_java代码
下一篇:
医学论文英语标题写作的修辞原则