Java中replaceString_java9之String.replace()改进

据说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。

1a3817ac38fce34a1cd9c5f9278bead5.png

然后看看java9的实现

561fa3d0f6fb02e62035b9d5643bc5ae.png

那么先看看isLatin1干了什么?看意思好像是说用了ISO-8859-1编码还是UTF编码,至于COMPACT_STRINGS,看注释说的是当设置成false的时候,默认使用UTF16编码。

bacc37856d4762bf075327992c9d8539.png

看看StringLatin1中的replace好像实现来说就加了编码的控制,方法好像差不多;

0b8264c27b096febab16ee5eb9fbed7b.png

java8中字符串匹配的replace,用了正则表达式的匹配处理替换。

f3f2008c61d95125c648990dc0cc21dd.png

但是java9中的写法就不一样了,是自己实现的,先获取第一个位置,接着往下替换,所以aaa用b替换aa,就会返回ba,而不是ab。

7297fa64d52392e3741505f17c6a4ee3.png

复制一段文字测试一下

adc4fb5832b4167cc7f41563af481c06.png

java8的结果

84cb166200b76296b3e64c3987b6177a.png

java9的结果

5c1c57d1f6ea4686de3e0cb97b26628b.png

目测这快的不止一点点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值