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
读者可以根据上面的构造器,自己编写一些代码来熟悉它们。