欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

String split方法實現(xiàn)過程圖解

 更新時間:2019年11月18日 10:51:54   作者:張曾經(jīng)  
這篇文章主要介紹了String split方法實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了String split方法實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

String的split方法相信大家都不陌生,或多或少都用過它將字符串轉(zhuǎn)成一個數(shù)組,但是就是這樣一個簡單的方法,里面也有一個不得不注意、不深不淺的小坑。

本地測試代碼如下圖所示:

圖1

大家會發(fā)現(xiàn)split1跟split3的長度符合我們的預(yù)期,但是split2應(yīng)該是長度為5,但實際長度卻仍然為4。相信大家在遇到這種情況的時候,

應(yīng)該能立馬猜到String的這個split方法應(yīng)該不只是進(jìn)行一個匹配拆分的操作,還做了其他的邏輯處理,比如這里應(yīng)該做了去除最后一個空元素

的操作。既然有了這樣的猜想,那就繼續(xù)看看源碼尋根溯源一下吧。

圖2

該方法調(diào)用了一個重載的方法,第一個參數(shù)沒變,第二個參數(shù)limit傳了0,繼續(xù)追溯

圖3

卻發(fā)現(xiàn)有點頭大,比較麻煩,完全看不下去了。

換個思路,debug一下,看看這最后一個空的元素是在哪里被過濾掉的,一試果然發(fā)現(xiàn)了案發(fā)地。

圖4

此處的list里存放的是全部的5個元素,而在下面的while循環(huán)里,可以看到是從尾部往前遍歷看哪個元素長度為0,

有一個為0的就減一個長度,直到碰到第一個不為空的元素為止。進(jìn)行完這個while循環(huán)之后,就截取前面的元素,

轉(zhuǎn)成數(shù)組返回。

通過以上的簡要分析,即可知道,對于String的split方法,如果字符串末尾剛好是匹配字符,則會自動將最后一個

空元素去掉,而字符串首部有空元素則不受影響。

多說兩句,其實對于limit參數(shù),測試幾次便可發(fā)現(xiàn),此參數(shù)是限制返回的數(shù)據(jù)最大長度的。測試代碼如下:

圖5

可知傳了limit值,就不會自動去掉末尾的空元素。具體原因可見圖4源碼,如果limit不為0,則不會走if中的while循環(huán),也就不會出現(xiàn)上文中說的情況了。

對于這種坑,沒什么避免的好辦法,一是擴(kuò)大自己的知識面,二是多積累總結(jié)。加油吧!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot QQ郵箱發(fā)送郵件實例代碼

    SpringBoot QQ郵箱發(fā)送郵件實例代碼

    大家好,本篇文章主要講的是SpringBoot QQ郵箱發(fā)送郵件實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • java中將漢字轉(zhuǎn)換成拼音的實現(xiàn)代碼

    java中將漢字轉(zhuǎn)換成拼音的實現(xiàn)代碼

    java中將漢字轉(zhuǎn)換成拼音的實現(xiàn)代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 詳解poi+springmvc+springjdbc導(dǎo)入導(dǎo)出excel實例

    詳解poi+springmvc+springjdbc導(dǎo)入導(dǎo)出excel實例

    本篇文章主要介紹了poi+springmvc+springjdbc導(dǎo)入導(dǎo)出excel實例,非常具有實用價值,需要的朋友可以參考下。
    2017-01-01
  • java設(shè)計模式--原型模式詳解

    java設(shè)計模式--原型模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計模式之Prototype原型模式的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Springboot Apollo配置yml的問題及解決方案

    Springboot Apollo配置yml的問題及解決方案

    這篇文章主要介紹了Springboot Apollo配置yml的問題及解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • springboot?整合sentinel的示例代碼

    springboot?整合sentinel的示例代碼

    本文主要介紹了springboot?整合sentinel的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java?九宮重排(滿分解法)

    Java?九宮重排(滿分解法)

    本文主要介紹了Java?九宮重排(滿分解法),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解Spring關(guān)于@Resource注入為null解決辦法

    詳解Spring關(guān)于@Resource注入為null解決辦法

    這篇文章主要介紹了詳解Spring關(guān)于@Resource注入為null解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java基于迭代器模式實現(xiàn)的訪問人員列表操作示例

    Java基于迭代器模式實現(xiàn)的訪問人員列表操作示例

    這篇文章主要介紹了Java基于迭代器模式實現(xiàn)的訪問人員列表操作,簡單描述了迭代器模式的概念、原理以及使用迭代器模式實現(xiàn)訪問人員列表的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Java中的transient關(guān)鍵字介紹

    Java中的transient關(guān)鍵字介紹

    這篇文章主要介紹了Java中的transient關(guān)鍵字介紹,需要的朋友可以參考下
    2015-03-03

最新評論