不可变String
每一个字符串对象都是不可改变的,看似改变的String的方法只是将引用指向了一个新的字符串。
public class Demo {
public static void main(String[] args) {
String s = "www";
System.out.println(s.toUpperCase() + " " + s);
}
}//Output: WWW www
虽然将字符串转为了大写却并没有改变原来的字符串。
StringBuilder较String效率高。
StringBuilder和StringBuffer后者线程安全。
13.5 格式化输出
Stirng s = “233”;
system.out.format(“the string is %s”, s);
等价于C语言中的
printf(“the string is %s”, s);
Formatter类
e.g. Float fl = 1.0;
Formatter f = new Formatter(System.out);
f.format(“%5s”, s);//右对齐,若不满5个字符不全5个。
f.format(“%-5s”, s);//左对齐,若不满5个字符不全5个。
f.format(“%5.6s”, s);//右对齐,若不满5个字符不全5个,且长度不超过6个。
f.format(“%.6f”, fl);//右对齐,小数点保留后六位。
只要对象不为空,在转为boolean对象时,值均为true。
int i = 0;
System.out.format("%b", i);
//Output:true
13.6 正则表达式
调用String对象的match方法,进行匹配,返回一个表示是否匹配成功的boolean值。
spilt方法,以正则表达式匹配字符作为分割,返回分割后的字符串集合。
Pattern类,编译后的正则表达式,调用matcher方法,进行匹配返回一个matcher对象,包含匹配的字符串状态信息。
match的reset方法,更改匹配的字符串。