查看 String 源码时发现:
调用 matches 方法时,
在内部 为正则表达式创建了一个 Pattern 对象,却只用了一次。
之后就可以进行垃圾回收了。
// String 这是String 的 matches 方法
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
// Pattern
public static boolean matches(String regex, CharSequence input) {
// 创建了一个 Pattern 实例
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();
}
为了提升性能,应该显示的将正则表达式编译成一个 Pattern 实例(不可变),让它成为类的一部分,
并缓存起来,每次调用的时候重用同一个实例:
private static final Pattern ROMAN = Pattern.compile("regex");
static boolean isRomanString(String s){
return ROMAN.matcher(s).matches();
}
避免频发的创建回收对象!!!