一、字符串
从概念上讲,Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫做Sting。每个用双引号括起来的字符串都是String类的一个实例:
String e="";//空串
String s=“Hello”;
-
子串
String类的subString方法可以从一个较大的字符串提取一个子串。
例如:
String a=“Hello”;
String b=a.sbuString(0,3);创建一个由字符"Hel"组成的字符串。
注释:Java字符串中的代码单元和代码点从0开始计数。
subString方法的第二个参数是不想复制的第一个位置。
上述subString中从0开始计数,直到3为止,但不包括3。subString的工作方式有一个优点:容易计算子串的长度。字符串a.subString(A,B)的长度为B-A。子串b的长度为3-0=3。 -
拼接字符串
Java语言允许使用+号连接(拼接)两个字符串。
String a=“Hello”;
String b=“World”;
String c=a+b;
上述代码将"HelloWorld"赋给变量c(注意,单词之间没有空格,+号完全按照给定的次序将两个字符串拼接起来)。
当将一个字符串与一个非字符串的值进行拼接时,后者会转换成字符串。
例如:
int age=18;
String word=“xiaoming”+age;
word为"xiaoming18"。
这种特性通常用在输出语句中。
例如:System.out.println(“nama is”+name);
在Java11中,还提供了一个repeat方法:
String repeated=“Java”.repeat(3);// repeated 为"JavaJavaJava" -
不可变字符串
String类没有提供修改字符串中某个字符的方法。
如果想要修改字符串,可以提取想要保留的子串,再与希望替换的字符拼接。由于不能修改Java字符串中的单个字符,所以在Java文档中将String类对象称为是不可变的。如同数字3永远是数字3一样,字符串“Hello”永远包含字符H、e、l、l、和o的代码单元序列。你不能修改这些值,不过,可以修改字符串变量,让它引用另一个字符串,这就如同可以让原本存放3的数值变量改成存放4一样。
不可变字符串有一个优点:编译器可以让字符串共享。
可以想象将各种字符串存放在公共的存储池中,字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。 -
检测字符串是否相等
可以使用equals方法检测两个字符串是否相等。对于表达式:
s.equals(t)
如果字符串s与字符串t相等,则返回true;否则,返回false。
需要注意的是,s与t可以是字符串变量,也可以是字符串字面量。
例如,以下表达式是合法的:“Hell”.equals(“Hello!”)要想检测两个字符是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。、
如:“Hello”.equalsIgnoreCase(”hello“)
一定不要使用==运算符检测两个字符串是否相等!这个运算只能够确定两个字符串是否存放在同一位置上。当然,如果字符串在同一位置上,它们必然相等。但是,完全有可能将内容相同的多个字符串副本放置在不同的位置上。 -
空串与Null串
空串”“是长度为0的字符串。
可以调用以下代码检查一个字符串是否为空:
if(str.length()==0) 或 if(str.equals(""))
空串是一个Java对象,有自己串长度(0)和内容(空)。不过,String变量还可以存放一个特殊的值,名为null,表示目前没有任何对象与该变量关联。
要检查一个字符串是否为null,要使用以下条件:
if(str ==null)
要检查一个字符串既不是null也不是空串,这种情况下就需要使用以下条件:
if(str !=null && str.length!=0) -
码点与代码单元
Java字符串由char值序列组成。char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。最常用的Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
length方法将返回采用UTF-16编码表示给定字符串所需要的代码单元数量。
例如: String str=“Hello”;
int n=str.length();//n=5 -
String API
Java中的String类包含了50多个方法。给出的API注释可以帮助你理解Java应用编程接口(API)。每个API的注释都以类名开始,如java.lang.String。类名之后是一个或多个方法的名字、解释和参数描述。 -
构建字符串
如果需要用许多小段的字符串来构建一个字符串,首先构建一个空的字符串构建器:
StringBulider builder=new StringBuilder();
当每次需要添加一部分内容时,就调用append方法。
builder.append(ch);
builder.append(str);
在字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含了构建器中的字符序列。
String completedString=builder.toString();
注释:
StringBuilder类在Java5中引入。这个类的前身是StringBuffer,它的效率稍有些低,但允许采用多线程的方式添加或删除字符。如果所有字符串编辑操作都在单个线程中执行(通常都是这样),则应该使用StringBuilder。