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。

161814_O8tM_2277632.png

然后看看java9的实现

162600_xB4Z_2277632.png

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

162759_cJA8_2277632.png

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

163507_eAgH_2277632.png

 

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

172624_tSmO_2277632.png

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

172815_G1Jw_2277632.png

复制一段文字测试一下

200808_Hfhb_2277632.png

java8的结果

200838_RZFO_2277632.png

java9的结果

200934_ewyL_2277632.png

目测这快的不止一点点

转载于:https://my.oschina.net/u/2277632/blog/1564056

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值