据说java9的spring.replace比java8的高效了许多,看看内部实现吧
先看看java8中的 其中单个字符的处理
replace(char oldChar, char newChar) 方法,使用大家已经很熟悉了吧
比如:mesquite in your cellar".replace('e', 'o') returns "mosquito in your collar"
上面那个是从代码注释中复制出来的例子,下面是对string中单个字符的替换,将数组val赋值给了buf,如果遇到oldchar就用newChar替换, 然后返回一个新的String。
然后看看java9的实现
那么先看看isLatin1干了什么?看意思好像是说用了ISO-8859-1编码还是UTF编码,至于COMPACT_STRINGS,看注释说的是当设置成false的时候,默认使用UTF16编码。
看看StringLatin1中的replace好像实现来说就加了编码的控制,方法好像差不多;
java8中字符串匹配的replace,用了正则表达式的匹配处理替换。
但是java9中的写法就不一样了,是自己实现的,先获取第一个位置,接着往下替换,所以aaa用b替换aa,就会返回ba,而不是ab。
复制一段文字测试一下
java8的结果
java9的结果
目测这快的不止一点点