最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入剖析Java中String類的concat方法

 更新時(shí)間:2021年12月08日 10:33:43   作者:拘夢2014  
這篇文章主要介紹了Java中String類的concat方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java String類的concat方法

在了解concat()之前,首先需要明確的是

String的兩點(diǎn)特殊性

  • 長度不可變
  • 值不可變

這兩點(diǎn)從源碼中對String的聲明可以體現(xiàn):

private final char[] value ;

其中final對應(yīng)值的不可更改的特性;而char[]對應(yīng)String是長度不可更改的特性。

因此,當(dāng)我們對String進(jìn)行拼接后,產(chǎn)生的應(yīng)該是一個(gè)新的字符串。

對于這一點(diǎn),我們可以對concat()進(jìn)行源碼的解讀得出同樣的結(jié)論。

  • @param str 需要拼接到原字符串的新串
  • @param otherlen 新串的長度
  • @param len 原字符串的長度
  • @param buf 存放最終字符串的字符數(shù)組(長度為len+otherlen)
@method  copyOf(char[] original, int newLength) 

復(fù)制指定的數(shù)組,截取或用 null 字符填充(如有必要),以使副本具有指定的長度。

@method getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。

public String concat(String str) {
        int otherLen = str.length();
        if (otherLen == 0) {
            return this;
        }
        int len = value.length;
        char buf[] = Arrays.copyOf(value, len + otherLen);
        str.getChars(buf, len);
        return new String(buf, true);
    }

源碼分析

concat()方法首先獲取拼接字符串的長度,判斷這個(gè)字符串長度是否為0(判斷這個(gè)用來拼接的字符串是不是空串),如果是就返回原來的字符串(等于沒有拼接);否則就獲取源字符串的長度,創(chuàng)建一個(gè)新的char[]字符數(shù)組,這個(gè)字符數(shù)組的長度是拼接字符串的長度與源字符串的長度之和,通過Arrays類的copyOf方法復(fù)制源數(shù)組,然后通過getChars方法將拼接字符串拼接到源字符串中,然后將新串返回。

API中也對這個(gè)方法進(jìn)行了解釋:

如果參數(shù)字符串的長度為 0,則返回此 String 對象。

否則,創(chuàng)建一個(gè)新的 String對象,用來表示由此 String 對象表示的字符序列和參數(shù)字符串表示的字符序列連接而成的字符序列。

綜上,當(dāng)對String對象進(jìn)行拼接時(shí),會創(chuàng)建一個(gè)新的字符串來存儲新串。

String類中concat()方法筆記及底層實(shí)現(xiàn)

public String concat(String str)

將指定字符串連接到此字符串的結(jié)尾,需要?jiǎng)?chuàng)建對象才能夠調(diào)用該方法,返回值為字符串。

public  String  concat1(String s){
  String a = new String("jijeufh");
  char [] b = new char[a.length()];
  char [] d =  new char[b.length+s.length()];
  //創(chuàng)建一個(gè)能夠容納兩個(gè)數(shù)組長度的數(shù)組
   a.getChars(0,b.length,d,0);
   //使用getChars方法,將對象數(shù)組中賦值到新的數(shù)組中,偏移量為0;
   s.getChars(0, s.length(), d, b.length);
   //使用getChars()方法將,參數(shù)數(shù)組賦值到新的數(shù)組中,偏移量對象數(shù)組的長度。
   String dd = new String(d);
   //通過String構(gòu)造器將數(shù)組轉(zhuǎn)換成為新的字符串。
   return dd;
  }
 ```

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java StringBuilder的用法示例

    Java StringBuilder的用法示例

    這篇文章主要給大家介紹了關(guān)于Java StringBuilder用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java中HashMap的初始容量設(shè)置方式

    Java中HashMap的初始容量設(shè)置方式

    這篇文章主要介紹了Java中HashMap的初始容量設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MyBatis實(shí)現(xiàn)遞歸查詢的方法詳解

    MyBatis實(shí)現(xiàn)遞歸查詢的方法詳解

    在項(xiàng)目開發(fā)過程中,往往會遇到多級菜單、分類等多層級結(jié)構(gòu)數(shù)據(jù)的查詢。本文就來為大家講講MyBatis實(shí)現(xiàn)遞歸查詢的方法,感興趣的可以動手嘗試一下
    2022-08-08
  • 詳解SpringMVC組件之HandlerMapping(一)

    詳解SpringMVC組件之HandlerMapping(一)

    這篇文章主要介紹了詳解SpringMVC組件之HandlerMapping(一),HandlerMapping組件是Spring?MVC核心組件,用來根據(jù)請求的request查找對應(yīng)的Handler,在Spring?MVC中,有各式各樣的Web請求,每個(gè)請求都需要一個(gè)對應(yīng)的Handler來處理,需要的朋友可以參考下
    2023-08-08
  • Mybatis執(zhí)行插入語句后并返回主鍵ID問題

    Mybatis執(zhí)行插入語句后并返回主鍵ID問題

    這篇文章主要介紹了Mybatis執(zhí)行插入語句后并返回主鍵ID問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法

    Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法

    這篇文章主要介紹了Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • springboot 按月分表的實(shí)現(xiàn)方式

    springboot 按月分表的實(shí)現(xiàn)方式

    本文主要介紹了springboot 按月分表的實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java高并發(fā)場景下的 HttpClient請求優(yōu)化實(shí)現(xiàn)

    Java高并發(fā)場景下的 HttpClient請求優(yōu)化實(shí)現(xiàn)

    本文主要介紹了Java高并發(fā)場景下的 HttpClient請求優(yōu)化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java中的Sort排序問題

    Java中的Sort排序問題

    這篇文章主要介紹了Java中的Sort排序問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java springboot 配置文件與多環(huán)境配置與運(yùn)行優(yōu)先級

    Java springboot 配置文件與多環(huán)境配置與運(yùn)行優(yōu)先級

    這篇文章主要介紹了Java springboot如何配置文件,進(jìn)行多環(huán)境配置,以及運(yùn)行優(yōu)先級,感興趣的小伙伴可以借鑒一下
    2023-04-04

最新評論

镶黄旗| 时尚| 砀山县| 孝感市| 五大连池市| 济宁市| 宾川县| 河北省| 涡阳县| 安达市| 安福县| 天津市| 恭城| 江达县| 长阳| 玉屏| 富锦市| 磴口县| 墨竹工卡县| 息烽县| 鹰潭市| 泾阳县| 濮阳县| 民权县| 安吉县| 沭阳县| 旬邑县| 高青县| 贞丰县| 汉川市| 子长县| 扎赉特旗| 蓬溪县| 青龙| 焦作市| 谢通门县| 柘城县| 建瓯市| 凉山| 新巴尔虎右旗| 中山市|