关于String的matches方法

弊端:

虽然String.matches方法最易于看一个字符串是否与正则表达式相匹配。但并不适合在注重性能的情形中重复使用。

问题在于,它内部为正则表达式创建了一个Pattern实例,却只用一次,之后就可以进行垃圾回收了。创建Pattern实例的成本很高。因为需要将正则表达式编译成一个有限状态机

为了提升性能,应该显式地将正则表达式编译成一个Pattern实例(不可变),让它成为类初始化的一部分,并将它缓存起来:

public class RomanNumerals{
    private static final Pattern ROMAN=Pattern.compile(...);
    static boolean isRomanNumeral(String s){
        return ROMAN.matcher(s).matches();
    }
}

 

posted @ 2019-06-07 18:56  l2c  阅读(1264)  评论(0)    收藏  举报