文章目录
String
String 类是不可变类,即一旦一个 String 对象被创建以后,包含在这个对象中的字符序列是不可变的,直至这个对象被摧毁。
StringBuffer
StringBuffer 对象则代表一个字符序列可变的字符串,当一个 StringBuffer 被创建以后,通过 StringBuffer 提供的 append、insert、reverse、setCharAt、setLength 等方法可以改变这个字符串对象的字符序列。最后,可以通过 toString 方法将其转化为一个 String 对象。
- StringBuffer 的 capacity
capacity的作用是查看StringBuffer的容器容量是多少。从源码可以得知
public StringBuffer() {
super(16);
}
如果直接是new StringBuffer(),则capacity为16。如果小于16则默认容器的大小为16。如果大于16则会调用expandCapacity 函数进行容量的扩展。由源码可以看到扩展的规则是把旧的容量(value的长度)*2+2。
StringBuilder
JDK1.5 又新增了 StringBuilder 类。与 StringBuffer 不同的是,StringBuffer 是线程安全的。
字符串常量池
strnull、str.length0 以及 str.equals("") 之间的区别
正则表达式
正则表达式式强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。
- boolean matches(String regex):判断该字符串是否匹配正则表达式
创建正则表达式
正则表达式就是一个字符串模板,可以匹配一批字符串,所以创建正则表达式就是创建一个特殊的字符串。
特殊字符 | 说明 |
---|---|
* | 指定前面子表达式可以出现0次或多次 |
+ | 指定前面子表达式可以出现一次或多次 |
? | 指定前面子表达式可以出现0次或1次 |
\ | 用于转义下一个字符,或指定八进制十六进制字符 |
特殊字符 | 说明 |
---|---|
. | 可以匹配任意字符 |
\d | 匹配0~9的所有字符 |
\D | 匹配非数字 |
\s | 匹配所有空白字符 |
\S | 匹配所有非空白字符 |
\w | 匹配所有单词字符 |
\W | 匹配所有非单词字符 |
上面的很好记忆,d 是 digit ,代表数字;s 是 space ,代表空白;
w 是 word 代表单词。大写恰好与之匹配相反的字符。
方括号表达式 | 说明 |
---|---|
表示枚举 | [abc] |
表示范围:- | [a-c] |
表示求否:^ | |
表示与运算 | |
表示并运算 |