13.2 字符串长度 字符串的长度是指其所包含的字符的个数。调用如下的length( )方法可以得到这个值: int length( ) 下面的程序段输出“3”,因为在字符串s中有三个字符。 char chars[] = { 'a', 'b', 'c' }; String s = new String(chars); System.out.println(s.length()); 13.3 特殊的字符串操作 因为字符串是程序中的一个通用和重要的部分,Java为字符串操作在语法中增加了特殊的支持。这些操作包括从字符串常量自动创建新的String实例。通过+运算符连接多个String对象以及将其他的数据类型转换成字符串形式。尽管有显式的方法去执行这些函数,而为了方便程序员,Java会自动执行它们。 13.3.1 字符串文字 前面的例子说明了如何通过使用new运算符从一个字符数组明确地创建一个String实例。然而这是一种早期的使用字符串常量的处理方法。对于程序中的每一个字符串常量,Java会自动创建String对象。因此,可以使用字符串常量初始化String对象。例如,如下的程序代码段创建两个相等的字符串。 char chars[] = { 'a', 'b', 'c' }; String s1 = new String(chars); String s2 = "abc"; // use string literal 由于对应每一个字符串常量,有一String对象被创建,因此在使用字符串文字的任何地方,都可以使用String对象。例如,可以直接对引用字符串调用方法,如同它是一个对象引用,如下面语句所显示的那样。以字符串“abc”调用方法length( ),正如所料,输出“3”。 System.out.println("abc".length()); 13.3.2 字符串连接 通常,Java不允许对String对象进行操作。这一规则的一个例外是+运算符,它可以连接两个字符串,产生一个String对象。也允许使用一连串的+运算符,例如下面的程序段将三个字符串连接起来: String age = "9"; String s = "He is " + age + " years old."; System.out.println(s); 输出为字符串“He is 9 years old.”。字符串连接的一个实际使用是当创建一个很长的字符串时,可以将它拆开,使用+将它们连接起来,避免源代码中长字符串的换行,下面是一个例子: // Using concatenation to prevent long lines. class ConCat { public static void main(String args[]) { String longStr = "This could have been " + "a very long line that would have " + "wrapped around. But string concatenation " + "prevents this."; System.out.println(longStr); } } 13.3.3 字符串与其他类型数据的连接 字符串可以和其他类型的数据连接。例如,考虑与前面的例子略有差别的一个例子: int age = 9; String s = "He is " + age + " years old."; System.out.println(s); 在这里,age是一个整型(int)而不是另一个字符串(String)型值,但是程序的输出与前面的例子相同。这是因为在字符串(String)对象中age的整型(int)值自动转换为它的字符串(String)形式。然后这个字符串就和前面一样被连接。只要+运算符的一个运算数是字符串(String)实例,编译器就将另一个运算数转换为它的字符串形式。应当小心的是当你将其他类型的操作与字符串连接表达式混合时,有可能得到意想不到的结果。看下面例子: String s = "four: " + 2 + 2; System.out.println(s); 程序显示: four: 22 而不是 four: 4 虽然这可能是你期望得到的。这是为什么呢?这是因为运算符的优先级造成了首先是“four”和与2相应的字符串的连接,这个连接的结果再和与2相应的字符串连接。若要先实现整数加,就应该使用圆括号。像下面这样: String s = "four: " + (2 + 2); 现在s包含了字符串“four:4”。
<<上一页
1
2
3
4
5
6
7
8
9
10
11
12
下一页>>
|