java字符串
java中没有内置的字符串类型,而是在标准java类库中提供了一个预定义类,自然的叫做String.
- 每个用双引号" "括起来的字符串都是一个String类的实例
- java中的任意对象都能被转化成string字符串
字符串的子串
String类中提供了一些方法
其中substirng方法可以从较大的字符串中提取一个子串
String lion = "shizi";
String zoo = lion.substring(0,3);
结果是创建了一个由"shi"组成的字符串
字符串的拼接
java语言允许用加号 + 将两个字符串拼接起来
String a = "bana";
String b = "na";
String c = a + b;
结果是创建了一个由"banana"组成的字符串
如果需要把多个字符串放在一起,并且用多个字符串分割,可以使用join静态方法
Sting all = String.join("/","m","l","xl");
//all 是 "m/l/xl"
不可变字符串
java在设计中,将String类对象设计成不可变字符串,这意味着不能修改字符串本身,而是使字符串变量引用的位置改变
例如
String a = "apple";
//此时想要把a变成apples
String a = a.substring(0,6)+"s";
这是java编辑器带来的优点之一,共享的高效率远大过于拼接或者修改
检测字符串是否相等
java中可以用equals方法来检测两个字符串是否相等
a.equals(b)
//返回值是boolean类型
equals方法并没有对字符串变量和字符串面量做要求
因此
a.equals("help")
或者
"help".equals(b)
是合法的
如果想要忽略大小写,可以使用equalsIgnoreCase方法
- 检测字符串是否相等绝对禁止使用==方法,由于虚拟机的原因,这种方式可能会产成随机bug
空串和null串
- 空串和null串并不相同\
- 空串是一个String对象,长度是0,内容是""空
- null串是String变量存放了一个特殊的值,名为null,代表没有任何变量与该对象相关联
有时要检测一个字符串既不为null又不为空,就要这样
if(a!= null && a.length! = 0)
码点与码点单元
java中String对象是由char值序列组成,而char类型是一个采用utf-16编码表示的unicode码点的代码单元.
length将返回字符串长度,也就是char类型码点单元的数量
例如
String a = "apple";
int b = a.length();
//b 是 5
要想得到实际的长度,也就是码点数量,需要用到codePoint方法
int b =a.codePoint(0,a.length());
//将返回字符串a的码点数量
String类提供了 50多个方法,一半以上都很有用
字符串的构建
在java中,每一次都是用String类重新构建字符串是很麻烦的,所以用到了StringBuffer和StringBuilder类(字符串构造器)
- StringBuffer在要求线程同步安全时使用,
- StringBuiler速度更快,推荐使用,但是不能线程同步访问
- 使用方法
-
//创建一个空的字符串构造器 StringBuilder builder = new StringBuilder(); //用append方法向字符串追加内容 builder.append("app"); builder.append("le"); //返回一个由构造器或者缓冲器创建的字符串 String food = builder.toString(); System.out.println(builder+""+food);