java9之String.replace()改進

聽說java9的spring.replace比java8的高效了許多,看看內部實現吧java

先看看java8中的 其中單個字符的處理正則表達式

replace(char oldChar, char newChar) 方法,使用你們已經很熟悉了吧spring

好比:mesquite in your cellar".replace('e', 'o')     returns "mosquito in your collar"數組

上面那個是從代碼註釋中複製出來的例子,下面是對string中單個字符的替換,將數組val賦值給了buf,若是遇到oldchar就用newChar替換, 而後返回一個新的String。測試

而後看看java9的實現ui

那麼先看看isLatin1幹了什麼?看意思好像是說用了ISO-8859-1編碼仍是UTF編碼,至於COMPACT_STRINGS,看註釋說的是當設置成false的時候,默認使用UTF16編碼。編碼

看看StringLatin1中的replace好像實現來講就加了編碼的控制,方法好像差很少;字符串

 

java8中字符串匹配的replace,用了正則表達式的匹配處理替換。string

可是java9中的寫法就不同了,是本身實現的,先獲取第一個位置,接着往下替換,因此aaa用b替換aa,就會返回ba,而不是ab。it

複製一段文字測試一下

java8的結果

java9的結果

目測這快的不止一點點

相關文章
相關標籤/搜索