6.2.2 字符串的处理类—String

字符串的声明非常简单,具体声明方法如下所示:


字符串类型字符串名=字符串内容


例如:String str=“we are chinese”。

在后面类和对象中,会提到一个构造器的概念。构造器就是从类中构造出对象的方法。字符串类一共有9种不同的构造器,下面将详细讲述其中的6种。

1.字符串类的默认构造器

“String()”这个构造器是最简单的构造器,也是系统默认的构造器,是不带参数的。

【实例6.3】下面通过实例来学习如何使用它。


01 ///创建一个空字符串str

02 ///因为是空字符串,所以输出也是没有内容的

03 public class str3

04 {

05 public static void main(String[]args)

06 {

07 String str=new String();

08 System.out.println(str);

09 }

10 }


【代码说明】第7行只初始化了一个字符串对象str,并没有为其赋值。

【运行效果】这个程序输出的结果为空,因为这个构造器构造出的对象是个空对象。

2.字节参数的构造器

【实例6.4】“String(byte[]byte)”将字节数组中的元素作为字符串对象。请看下面的例子,再来体会这个构造器的作用。


01 ///初始化一个字节数组b

02 ///通过构造器,将字节数组中的元素连接成一个字符串

03 ///将此字符串输出

04 public class str4

05 {

06 public static void main(String[]args)

07 {

08 byte[]b={97,98,99};

09 String str=new String(b);

10 System.out.println(str);

11 }

12 }


【代码说明】这个构造器的作用是将字节数组中的元素以字符串对象的形式输出。

【运行效果】输出结果并不是数值97的字符串“97”,而是其ASCII码代表的字符a。读者可自己动手实验,结果如下所示。

abc


3.获取指定字节数的构造器

“String(byte[]bytes, int offset, int length)”这个构造器的含义是:将字节数组中,从“offset”指定的位置开始,到“length”长度结束,中间的字符构成字符串对象。

【实例6.5】下面看一个简单的例子。


01 ///初始化一个字节数组b

02 ///通过构造器,将字节数组中的元素连接成一个字符串,并且从第4个位置开始,总共有2个元

03 ///素

04 ///将此字符串输出

05 public class str5

06 {

07 public static void main(String[]args)

08 {

09 byte[]b={97,98,99,100,101,102};

10 String str=new String(b,3,2);

11 System.out.println(str);

12 }

}


【代码说明】在“String”对象中,第一个参数“b”,就是指开始初始化的字符数组。第二个参数是3,就是指定从第4个位置开始,因为数组是从零开始的,所以3是指第4个位置即“4”。第三个参数是2,指定从这个位置开始后几个字符,因为是2,所以是从“4”开始的两个字符。

【运行效果】


de


4.将字节型数据转换为字符集输出的构造器

“String(byte[]bytes, int offset, int length, String charsetName)”这个构造器的含义就是:将一个字节数组中从第“offset”个位置的字符开始,“length”长度的字符结束,中间的字符形成了字符串对象,然后将这个字符串按照某种字符集样式输出。

字符集一般有“us-ascii”、“iso-8859-I”、“utf-8”、“utf-16be”、“utf-16le”、“utf-16”等样式。

【实例6.6】下面先看看这种构造器的实例。


01 import java.io.*;

02 ///初始化一个字节数组b

03 ///通过构造器,将字节数组中的元素连接成一个字符串,并且从第4个位置开始,总共有2个元素

04 05///将此字符串以UTF-16的形式输出

06 public class str6

07 {

08 public static void main(String[]args)

09 {

10 byte[]b={97,98,99,100,101,102};

11 try

12 {

13 String str=new String(b,3,2,"utf-8");

14 System.out.println(str);

15 }

16 catch(UnsupportedEncodingException ex){}

17 18

}

19 }


【代码说明】其实这个构造器的用法与上一个构造器差不多,唯独不同的就是输出结果的形式不一样。“String(byte[]bytes, String charsetName)”与上一个构造器是同类的构造器,此构造器是将整个字节数组作为字符串对象,并以某个字符集形式输出。

【运行效果】


de


5.字符数组的构造器

“String(char[]value)”构造一个字符数组,其实这个构造器与第二个构造器很相似,它是将字符数组内的字符连在一起,形成一个字符串。

【实例6.7】下面是这个构造器的实例。


01 ///初始化一个字符数组c

02 ///通过构造器,将字符数组中的元素连接成一个字符串

03 ///将此字符串输出

04 public class str7

05 {

06 public static void main(String[]args)

07 {

08 char[]c={'w','e','l','c','o','m','e'};

09 String str=new String(c);

10 System.out.println(str);

11 }

12 }


【代码说明】这个程序段要做的事情,就是将字符数组中所有的元素连起来形成一个字符串。【运行效果】


welcome


6.截取部分字符串数组内容的构造器

“String(char[]value, int offset, int count)”这个构造器的含义是:将字符数组中从“offset”指定的位置开始,“count”指定的数目结束,中间的字符连成字符串。

【实例6.8】下面是这个构造器的实例。


01 ///初始化一个字符数组c

02 ///通过构造器,将字符数组中的元素连接成一个字符串,并从第4个位置开始,总共有4个元素

03 ///将此字符串输出

04 public class str8

05 {

06 public static void main(String[]args)

07 {

08 char[]c={'w','e','l','c','o','m','e'};

09 String str=new String(c,3,4);

10 System.out.println(str);

11 }

12 }


【代码说明】第9行是截取字符串的意思,从第三个位置开始,因为数组位置从0开始,所以这里的3,其实就是从第四个字符c开始,截取4位。

【运行效果】


come


读者可以根据上面的构造器,自己编写一些代码来熟悉它们。