赛迪网 > IT技术 Java > 最新更新
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Java2 参考大全:第13 章 字符串处理 (11)

发布时间:2006.05.11 01:36     来源:清华大学出版社    作者:Herbert Schildt 著 张玉清 吴溥峰等 译

13.10.3 ensureCapacity( )

如果想在构造StringBuffer之后为某些字符预分配空间,可以使用ensureCapacity( )方法设置缓冲区的大小。这在事先已知要在StringBuffer上追加大量小字符串的情况下是有用的。ensureCapacity( )方法具有如下的一般形式:

void ensureCapacity(int capacity)

这里capacity指定了缓冲区的大小。

13.10.4 setLength( )

使用setLength( )方法在StringBuffer对象内设置缓冲区的大小。其一般形式如下:

void setLength(int len)

这里len指定了缓冲区的长度。这个值必须是非负的。当增加缓冲区的大小时,空字符将被加在现存缓冲区的后面。如果用一个小于length( )方法返回的当前值的值调用setLength( )方法,那么在新长度之后存储的字符将被丢失。后面的setCharAtDemo例子程序使用setLength( )方法缩短StringBuffer

13.10.5 charAt( )setCharAt( )

使用charAt( )方法可以从StringBuffer中得到单个字符的值。可以通过setCharAt( )方法给StringBuffer中的字符置值。它们的一般形式如下:

char charAt(int where)

void setCharAt(int where, char ch)

对于charAt( )方法,where指定获得的字符的下标。对于setCharAt( )方法,where指定被置值的字符的下标,而ch指定了该字符的新值。对于这两种方法,where必须是非负的,同时不能指定在缓冲区之外的位置。

下面的例子说明了charAt( )setCharAt( )方法:

// Demonstrate charAt() and setCharAt().

class setCharAtDemo {

public static void main(String args[]) {

StringBuffer sb = new StringBuffer("Hello");

System.out.println("buffer before = " + sb);

System.out.println("charAt(1) before = " + sb.charAt(1));

sb.setCharAt(1, 'i');

sb.setLength(2);

System.out.println("buffer after = " + sb);

System.out.println("charAt(1) after = " + sb.charAt(1));

}

}

下面是该程序的输出结果:

buffer before = Hello

charAt(1) before = e

buffer after = Hi

charAt(1) after = i

13.10.6 getChars( )

使用getChars( )方法将StringBuffer的子字符串复制给数组。其一般形式如下:

void getChars(int sourceStart, int sourceEnd, char target[ ],

int targetStart)

这里,sourceStart指定子字符串开始时的下标,而sourceEnd指定了该子字符串结束时下一个字符的下标。这意味着子字符串包含了从sourceStartsourceEnd–1位置上的字符。接收字符的数组由target指定。在target内将被复制子字符串的位置下标由targetStart传递。应注意确保target数组足够大以便能够保存指定的子字符串所包含的字符。

13.10.7 append( )

append( )方法将任一其他类型数据的字符串形式连接到调用StringBuffer对象的后面。对所有内置的类型和Object,它都有重载形式。下面是其几种形式:

StringBuffer append(String str)

StringBuffer append(int num)

StringBuffer append(Object obj)

每个参数调用String.valueOf( )方法获得其字符串表达式。结果追加在当前StringBuffer对象后面。对每一种append( )形式,返回缓冲区本身。它允许后续的调用被连成一串,下面的例子说明了这一点:

// Demonstrate append().

class appendDemo {

public static void main(String args[]) {

String s;

int a = 42;

StringBuffer sb = new StringBuffer(40);

s = sb.append("a = ").append(a).append("!").toString();

System.out.println(s);

}

}

程序的输出如下所示:

a = 42!

当对字符串(String)对象使用+运算符时,append( )方法是最常被调用的。Java自动地改变对字符串(String)实例的修改,就像对StringBuffer实例的操作一样。因此,连接调用StringBuffer对象的append( )方法。在执行连接之后,编译器插入对toString( )方法的调用,将修改的StringBuffer返回到一个不变的字符串(String)中。所有这一切看起来是很复杂的。为什么不是仅仅只有一个其操作或多或少地像StringBuffer的字符串类呢?答案是性能。Java运行时执行的许多优化是知道字符串(String)对象是不可改变的。值得欣慰的是Java隐藏了大多数复杂的StringStringBuffer之间的转换。实际上,大多数的程序员从没有直接感觉到需要使用StringBuffer,而可以根据应用于字符串(String)变量上的+运算符表示大多数的操作。

13.10.8 insert( )

insert( )方法将一个字符串插入另一个字符串中。它被重载而接收所有简单类型的值,包括StringObject。和append( )方法一样,它调用String.valueOf( )方法得到调用它的值的字符串表达式。随后这个字符串被插入所调用的StringBuffer对象中。下面是它们的几种形式:

StringBuffer insert(int index, String str)

StringBuffer insert(int index, char ch)

StringBuffer insert(int index, Object obj)

这里index指定将字符串插入所调用的StringBuffer对象中的插入点的下标。

下面的例子程序完成在“I”和“Java”之间插入“like”的功能。

// Demonstrate insert().

class insertDemo {

public static void main(String args[]) {

StringBuffer sb = new StringBuffer("I Java!");

sb.insert(2, "like ");

System.out.println(sb);

}

}

程序的输出结果如下所示:

I like Java!

13.10.9 reverse( )

可以使用reverse( )方法将StringBuffer对象内的字符串翻转,其一般形式如下:

StringBuffer reverse( )

这种方法返回被调用对象的翻转对象。下面的程序说明了reverse( )方法:

// Using reverse() to reverse a StringBuffer.

class ReverseDemo {

public static void main(String args[]) {

StringBuffer s = new StringBuffer("abcdef");

System.out.println(s);

s.reverse();

System.out.println(s);

}

}

程序的输出结果如下所示:

abcdef

fedcba

<<上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管