1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java中String对象的replaceAll方法调用性能优化小技巧

Java中String对象的replaceAll方法调用性能优化小技巧

时间:2021-01-09 00:42:20

相关推荐

Java中String对象的replaceAll方法调用性能优化小技巧

Java中String对象的replaceAll方法调用性能优化小技巧

0x01 Java中String对象的replaceAll方法调用性能优化小技巧1.1 What?1.2 Why?1.3 how to fix it?0x02 参考文献

0x01 Java中String对象的replaceAll方法调用性能优化小技巧

1.1 What?

如果项目中有很多地方用到了String对象的replaceAll方法,那么像如下这样写是有一定性能问题的:

public static void main(String[] args) {String a="AAAA,BBBB";String regex=",";String repl="";String b=a.replaceAll(regex,repl);System.out.println(b);}

1.2 Why?

Talk is easy ,show you the code as below:

public static void main(String[] args) {String a="AAAA,BBBB";String regex=",";String repl="";String b=a.replaceAll(regex,repl);// a.replaceAll(regex,repl) 底层实现String c= pile(regex).matcher(a).replaceFirst(repl);// pile(regex)底层实现是这样的:// new Pattern(regex, 0).matcher(a).replaceFirst(repl);// b和c是等价的System.out.println(b);System.out.println(c);}

我们可以看到,每做一次replaceAll替换,就需要new Pattern(regex, 0);一次

但实际上如果regex是固定的,项目中多次执行这个方法,那么我们如果这样写,你觉得是不是对象创建的浪费呢?

1.3 how to fix it?

那么如何修复呢?

private static final Pattern PATTERN=pile(",");public static void main(String[] args) {String a="AAAA,BBBB";// 建议修复方案String d= PATTERN.matcher(a).replaceFirst(repl);}

0x02 参考文献

Java replaceAll() 方法Regex patterns should not be created needlessly

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。