Pretty simple question, but this is coming from a C/C++ person getting into the intricacies of Java.
I understand I can fire up jUnit and a few performance tests of my own to get an answer; but I'm just wondering if this is out there.
Are there known difference(s) between String.replaceAll() and Matcher.replaceAll() (On a Matcher Object created from a Regex.Pattern) in terms of performance?
Also, what are the high-level API 'ish differences between the both? (Immutability, Handling NULLs, Handling empty strings, making coffee etc.)
According to the documentation for
String.replaceAll, it has the following to say about calling the method:
An invocation of this method of the form
str.replaceAll(regex, repl)yields exactly the same result as the expression
As has been pointed out in the comments, the performance difference being non-existent would be true for a single call to
Matcher, however, if one needs to perform multiple calls to
replaceAll, one would expect it to be beneficial to hold onto a compiled
Pattern, so the relatively expensive regular expression pattern compilation does not have to be performed every time.