您的位置 首页 java

Java中正则表达式面试题解析

有一次参加一个面试,一个面试官拿了一个面试题目,有一个判断 字符串 是否是数字的方法,问我有什么问题,应该如何优化。方法如下:

这是一个比较贴近实战的面试题,如果系统使用的频率不高,没有啥问题,但是遇到高并发,访问量很大的这个优化就很重要

正确的答案如下:

private static Pattern numericalPattern=Pattern.compile(“\d*”);

public static boolean isNumerical(String s) {

return numericalPattern.matcher(s).matches();

}

分析了一下String.matches的源码,调用了Pattern.matches

String.matches方法

分析一下Pattern.matches源码,调用了Pattern.compile

Pattern.matches

分析一下Pattern.compile,发现每次调用都会new一个Pattern对象

Pattern.compile

如果频繁调用此方法,性能消耗会很高。修改为 static 只在启动的时候,创建一次。

实验了一下有6.5倍的性能提升。

文章来源:智云一二三科技

文章标题:Java中正则表达式面试题解析

文章地址:https://www.zhihuclub.com/197648.shtml

关于作者: 智云科技

热门文章

网站地图