java没有内置的字符串类型,而是在变准的java类库中提供了一个预定义类,很自然的叫做String。每个用双引号括起来的字符串都是String类的一个实例:
String e = “”;// an empty string
String greeting = "Hello";
子串
String a = "Hello";
String b = a.substring(0, 3);//substring方法可以从一个较大字符串中提取出一个子串
System.out.println(b);//创建了一个由字符"Hel"组成的字符串
截取长度从0开始算,截取位置为0.1.2,不包含3。
substring的优点,容易计算子串长度。以上例子3-0=3,长度就是3个"Hel"。
拼接
与其他大多数语言一样,java语言允许使用+号拼接两个字符串。
String a = "123";
String b = "456";
String c = a + b;
System.out.println(c);
得到结果123456
字符串和非字符串拼接,后者被转换成字符串。
int a = 123;
String b = "456";
String c = a + b;
System.out.println(c);
得到的结果依然是123456,此特性一般用于输出语句中。
不可变字符串
String类没有提供用于修改字符串的方法。不能修改java字符串中的字符,所以在java文档中将String成为不可变的。
检测字符串是否相等
String a = "a";
String an = "an";
System.out.println(a.equals(an));
很明显不相等,打印出来的结果是false。a.equals(a)则返回true。
不区分大小写
检测两个字符串变量,而不区分大小写。则使用equalsIgnoreCase方法。
注意:不要使用==去检测两个字符串是否相等!这个运算符只能够确定两个字符串是否放置在同一个位置上。
同一位置上,必然相等。但是完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。
String a = "Hello";
if(a=="Hello"){
System.out.println("true");
}
if(a.substring(0, 3)=="Hel"){
System.out.println("true1");
}
结果只会打印第一个true,而true1将不会被打印出来。
空串和null串
空串,长度为0的字符串。可以调用以下代码检查字符串是否为空。
String str = "";
if(str.length()==0){
System.out.println("1");
}
if(str.equals("")){
System.out.println("2");
}
空串是一个java对象,串长度为0和内容为空。不过String变量还可以存放一个特殊的值null,这表示目前没有任何对象与该变量关联,检查一个字符串为null,要使用以下条件:
String str = null;
if(str==null){//检查字符串是否为空
System.out.println("1");
}
有事要检查一个字符串既不是null也不为空串,这种情况下就需要使用以下条件:
String str = "";
if(str!=null&&str.length()!=0){//检查字符串是否非空
System.out.println("2");
}
注意:如果在一个null值上调用方法会出现错误。