从概念上讲,Java字符串,就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中,提供了一个预定义类,很自然的叫做String。每个用双引号括起来的字符串,都是String类的一个实例:
String e = ""; // 一个空串
String f = "Hello";
1.子串
String类的substring方法,可以从一个较大的字符串中,提取出一个子串。例如:
String f = "Hello";
String s = f.substring(0, 3); // 下标从0开始,取头不取尾
创建了一个由字符“Hel”组成的字符串。
或者:String t = f.substring(3, 5); // 5为字符串的长度,f.length()
等同于String t = f.substring(3); // 从下标位置,截取到末尾
2.拼接
与绝大多数的程序设计语言一样,Java语言允许使用+号连接(拼接)两个字符串。
String f = "Hello";
String t = "World";
String r = s + t;
上述代码将“HelloWorld”赋给变量r(注意,单词之间没有空格,+号按照给定的次序,将两个字符串拼接起来)。
3.不可变字符串
String类没有提供用于修改字符串的方法。如果希望将f的内容,修改为“Help!”,不能直接地将f的最后两个位置的字符,修改为‘p’和‘!’。必须首先提取需要的字符,然后再拼接上替换的字符串:
f = f.substring(0, 3) + "p!";
上面这条语句,将f当前值修改为“Help!”。
由于不能修改Java字符串中的字符,所以在Java文档中,将String类对象称为不可变字符串。
4.检测字符串是否相等
可以使用equals方法,检测两个字符串是否相等。对于表达式:
s.equals(t);
如果字符串s与字符串t相等,则返回true;否则,返回false。需要注意,s与t可以是字符串变量,也可以是字符串字面量。例
如,下列表达式是合法的:
"Hello".equals(f);
要想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。
"Hello".equalsIgnoreCase("hello");
一定不要使用==运算符检测两个字符串是否相等!这个运算符只能够确定两个字符串是否放置在同一个位置上。
Java也可以使用compareTo方法,对字符串进行比较:
if(f.compareTo("Hello") == 0)...
不过,使用equals看起来更为清晰。
5.空串与Null串
空串""是长度为0的字符串。可以调用以下代码检查一个字符串是否为空:
if(str.length() == 0) 或 if(str.equals(""))
空串是一个Java对象,有自己的串长度(0)和内容(空)。不过,String变量还可以存放一个特殊的值,名为null,这表示目前
没有任何对象与该变量关联。要检查一个字符串是否为null,要使用以下条件:
if(str == null)
有时要检查一个字符串既不是null,也不为空串,这种情况下,就需要使用以下条件:
if(str!=null && str.length()!=0)
首先要检查str不为null。如果在一个null值上调用方法,会出现错误。
6.构建字符串
如果需要用许多小段的字符串,构建一个字符串,那么应该按照下列步骤进行。
首先,构建一个空的字符串构建器(StringBuilder类):
StringBuilder bulider = new StringBuilder();
当每次需要添加一部分内容时,就调用append方法。
builder.append(cha); // 添加一个字符
builder.append(str); // 添加一个字符串
在需要构建字符串时,就调用toString方法,将可以得到一个String对象,其中包括了构建器中的字符序列。
String comString = builder.toString();