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

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

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

 在第7章已对Java的字符串处理做了简要的介绍。本章将对此做详细论述。像大多数其他计算机语言一样,Java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。例如,Java语言中有多种方法用于比较两个字符串,搜索子字符串,连接字符串以及改变字符串中字母的大小写。也有许多途径可以构造出String对象,使得当需要时,能够容易得到字符串。有些出乎意料的是当创建一个String对象时,被创建的字符串是不能被改变的。这也就是说一旦一个String对象被创建,将无法改变那些组成字符串的字符。表面上看起来,这好像是一个严格的约束。然而事实并非如此。你仍能够执行各种类型的字符串操作。区别在于每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。之所以采用这种方法是因为实现固定的,不可变的字符串比实现可变的字符串更高效。对于那些想得到改变的字符串的情况,有一个叫做StringBufferString类的友类。它的对象包含了在创建之后可被改变的字符串。String类和StringBuffer类都在java.lang中定义。因此它们可以自动的被所有程序利用。两者均被说明为final,这意味着两者均不含子类。从而使得某些增强性能的优化可作用于普通字符串操作。最后需要指明一点:包含在类型String对象中的字符串的不可改变意味着String实例一旦被建立,它的内容将不能被改变。然而在任何时候,被说明为String引用的变量可以被改变以指向另外的一些字符串(String)对象。

13.1 String构造函数

String类支持几种构造函数。将创建空String的构造函数称为默认构造函数。例如,

String s = new String();

将创建一个String实例,该实例中不包含字符。通常希望创建含有初始值的字符串。String类提供了各种构造函数来完成这项功能。使用如下的构造函数可以创建一个被字符数组初始化的字符串(String):

String(char chars[ ])

下面是一个例子:

char chars[] = { 'a', 'b', 'c' };

String s = new String(chars);

这个构造函数用字符串“abc”初始化s

使用下面的构造函数可以指定字符数组的一个子区域作为初始化值。

String(char chars[ ], int startIndex, int numChars)

这里,startIndex指定了子区域开始的下标,numChars指定所用字符的个数。下面是一个例子:

char chars[] = { 'a', 'b', 'c', 'd', 'e', 'f' };

String s = new String(chars, 2, 3);

该例子用字符cde初始化s。用下面的构造函数可以构造一个String对象,该对象包括了与另一个String对象相同的字符序列。

String(String strObj)

这里strObj是一个String对象,请看如下例子:

// Construct one String from another.

class MakeString {

public static void main(String args[]) {

char c[] = {'J', 'a', 'v', 'a'};

String s1 = new String(c);

String s2 = new String(s1);

System.out.println(s1);

System.out.println(s2);

}

}

程序的输出如下所示:

Java

Java

正如你所能看到的,s1s2包含了相同的字符串。尽管JavaChar类型使用16位(bit)表示Unicode编码字符集,在Internet中,字符串的典型格式使用由ASCII字符集构成的8位字节数组。因为8ASCII字符串是共同的,当给定一个字节(byte)数组时,String类提供了初始化字符串的构造函数。它们的形式如下:

String(byte asciiChars[ ])

String(byte asciiChars[ ], int startIndex, int numChars)

这里asciiChars指定了字节数组。第二种形式允许指定一个子区域。在这些构造函数中,通过使用操作平台默认的字符编码实现了由字节到字符的转换,下面的程序举例说明了这些构造函数:

// Construct string from subset of char array.

class SubStringCons {

public static void main(String args[]) {

byte ascii[] = {65, 66, 67, 68, 69, 70 };

String s1 = new String(ascii);

System.out.println(s1);

String s2 = new String(ascii, 2, 3);

System.out.println(s2);

}

}

该程序运行产生如下的输出:

ABCDEF

CDE

字节-字符串转换的扩展版本也有定义,使用该版本,你可以指定实现字节-字符串转换的字符编码方式。不过,大多数情况下,一般会选择操作平台提供的默认编码。注意:当从一个数组创建一个String对象时,数组的内容将被复制。在字符串被创建以后,如果改变数组的内容,String将不会随之改变。

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学习·网管