不可变String
String对象不可变,每一次“+”都会产生一个新的String对象,同时,变更的只是引用。
对比:空字符串和null
对比 空字符串 null 区别 在堆内存中存在,有内存空间,但没有内容 在堆内存中不存在,无法调用方法
重载“+”与StringBuilder
在使用“+”时,会调用StringBuilder来进行连接。
StringBuilder result = new StringBuilder();
for (int i = 0; i < values.length; i ++) {
result.append(values[i]);
}
对比:String、StringBuilder、StringBuffer
类 String(“+”) StringBuilder StringBuffer 区别 只读,不可变 可写,单线程环境下使用,效率更高 可写,多线程被synchronized修饰,线程安全 使用场景 少量字符串 频繁、大量,局部变量,单线程,不涉及线程安全 全局变量,多线程支持
正则表达式
String类中使用到正则表达式的方法有:
matches、replaceAll、replaceFirst、split。
对比:replaceAll、replaceFirst、replace
方法 replaceAll replaceFirst replace 区别 正则表达式 正则表达式 普通参数 功能 替换全部匹配值 替换第一个匹配值 替换所有相同参数
常用元字符 | 功能 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字或下划线 |
\s | 匹配空白符 |
\S | 匹配非空白符 |
\d | 匹配数字 |
\D | 匹配非数字 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用限定符 | 功能 |
---|---|
* | 重复0次或多次 |
+ | 重复1次或多次 |
? | 重复0次或1次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
注1:若查询元字符或限定符本身,需使用转义字符“\”。
注2:“[]”表示匹配其中的任何一个即可;“|”表示两种不同规则进行匹配
正则表达式的一般用法
import java.util.regex; //引入包
Pattern p=Pattern.compile(regex); //regex:正则表达式
Matcher m=p.matcher(string); //string:匹配字符串
m.matches(); //return boolean
(参考资料:Pattern)
量词:匹配模式
匹配模式 | 贪婪型 | 勉强型 | 占有型 |
---|---|---|---|
功能 | 最大匹配,匹配多次直到最大匹配 | 最小匹配,尽可能少 | 完全匹配,只执行一次 |