第11章 Java常用类库
通过本章的学习可以达到以下目标:
掌握String与StringBuffer的区别,可以熟练使用StringBuffer中的各种方法进行相关操作。
能够自己编写一个得到日期的操作类,并将这些日期进行格式化操作。
掌握比较器及其基本原理,并可以通过比较器进行对象数组的比较操作。
掌握对象克隆技术及其实现要求。
能够灵活地应用正则表达式对字符串的组成进行判断。
了解并使用Java中提供的观察者操作机制。
认识Java中的Random、Locale、Math等常用类,并可以使用Local进行国际化程序的编写。
描述出Object、System类对垃圾收集的支持。
使用NumberFormat、DecimalFormat、BigInteger、BigDecimal进行数字的操作。
了解Java定时器任务调度的实现。
在Java中提供了很多的操作类库,为读者开发程序提供了方便,之前讲解数组时的排序操作方法及String类等,都是Java提供给用户的类库。本章将介绍在实际开发时Java中出现的各种常见类库。本章视频录像讲解时间为5小时38分钟,源代码在光盘对应的章节下。
11.1 StringBuffer类
11.1.1 认识StringBuffer类(1)
前面已经详细地讲解了String类的各种概念,其中有一条特性是String的内容一旦声明则不可改变,如果要改变,则改变的肯定是String的引用地址,那么如果一个字符串要被经常改变,则就必须使用StringBuffer类。从前面的学习中读者已经清楚地知道,在String类中可以通过"+"进行字符串的连接,但在StringBuffer中却只能使用append方法进行字符串的连接,如图11-1所示。
![]() |
(点击查看大图)图11-1 String与StringBuffer连接字符串的不同操作 |
表11-1中列出了StringBuffer中的一些常用方法,其他方法读者可以自行查询JDK文档。
表11-1 StringBuffer的常用方法
表11-1 StringBuffer的常用方法
序号<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
|
方 法 定 义
|
类型
|
描 述
|
1
|
public StringBuffer()
|
构造
|
StringBuffer的构造方法
|
2
|
public StringBuffer append(char c)
|
方法
|
在StringBuffer中提供了大
量的追加操作(与String
中使用“+”类似),可以向
StringBuffer中追加内容,
此方法可以添加任何的数据类型
|
3
|
public StringBuffer append(String str)
|
方法
| |
4
|
public StringBuffer append(StringBuffer sb)
|
方法
| |
5
|
public int indexOf(String str)
|
方法
|
查找指定字符串是否存在
|
6
|
public int indexOf(String str,int fromIndex)
|
方法
|
从指定位置开始查找指定
字符串是否存在
|
7
|
public StringBuffer insert(int offset,String str)
|
方法
|
在指定位置处加上指定字符串
|
8
|
public StringBuffer reverse()
|
方法
|
将内容反转保存
|
9
|
public StringBuffer replace(int start,int end, String str)
|
方法
|
指定内容替换
|
10
|
public int length()
|
方法
|
求出内容长度
|
11
|
public StringBuffer delete(int start,int end)
|
方法
|
删除指定范围的字符串
|
12
|
public String substring(int start)
|
方法
|
字符串截取,指定开始点
|
13
|
public String substring(int start,int end)
|
方法
|
截取指定范围的字符串
|
14
|
public String toString()
|
方法
|
Object类继承的方法,
用于将内容变为String类型
|
下面来一一验证这些方法。
U提示:StringBuffer支持的方法大部分与String类似。
因为StringBuffer在开发中可以提升代码的性能,所以使用较多,这样为了保证用户操作的适应性,在StringBuffer类中定义的大部分方法名称都与String是一样的。
1.实例操作一:字符串连接操作
在程序中使用append()方法可以进行字符串的连接,而且此方法返回了一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append()方法,代码如下所示。
范例:通过append连接各种类型的数据
- package org.lxh.demo11.stringbufferdemo;
- public class StringBufferDemo01 {
- public static void main(String[] args) {
- StringBuffer buf = new StringBuffer();
- // 声明StringBuffer对象
- buf.append("Hello ");
- // 向StringBuffer中添加
- 内容
- buf.append("World").append("!!!");
// 可以连续调用append方法 - buf.append("\n");
- // 添加一个转义字符表示换行
- buf.append("数字 = ").append(1).append("\n");
// 可以添加数字 - buf.append("字符 = ").append('C').append("\n");
// 可以添加字符 - buf.append("布尔 = "). append(true);
- // 可以添加布尔类型
- System.out.println(buf);
- // 内容输出
- }
- }
程序运行结果:
- Hello World!!!
- 数字 = 1
- 字符 = C
- 布尔 = true
以上代码中的"buf.append("数字 = ").append(1).append("\n")"实际上就是一种代码链的操作形式。
范例:验证StringBuffer的内容是可以修改的
- package org.lxh.demo11.stringbufferdemo;
- public class StringBufferDemo02 {
- public static void main(String[] args) {
- StringBuffer buf = new StringBuffer();
// 声明StringBuffer对象 - buf.append("Hello ");
- // 向StringBuffer中添加内容
- fun(buf) ;
// 传递StringBuffer引用 - System.out.println(buf);
- // 将修改后的结果输出
- }
- public static void fun(StringBuffer s){
// 接收StringBuffer引用 - s.append("MLDN ").append("LiXingHua")
;// 修改StringBuffer内容 - }
- }
程序运行结果:
- Hello MLDN LiXingHua
从程序的运行结果中可以发现,将StringBuffer对象的内容传递到了fun()方法后,对StringBuffer的内容进行修改,而且操作完毕后修改的内容将被保留下来,所以与String比较StringBuffer的内容是可以修改的。
转载于:https://blog.51cto.com/lixinghua/197883