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

java中StringBuffer的length()和capacity()方法對(duì)比

 更新時(shí)間:2021年07月06日 08:46:44   作者:石頭剪刀布_  
這篇文章主要介紹了java中StringBuffer的length()和capacity()方法對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

StringBuffer的length()和capacity()

StringBuffer類和String類差不多,都是字符串類,只是StringBuffer在對(duì)字符串進(jìn)行修改時(shí)不會(huì)生成新的對(duì)象,所以效率相對(duì)較高,占用空間也小。

length()方法和capacity()方法都是獲取StringBuffer的長(zhǎng)度。

length()返回字符串的實(shí)際長(zhǎng)度;

capacity()返回字符串所占容器的總大小。

舉例:

這里寫圖片描述

可以看到:

1.StringBuffer的的初始大小為(16+初始字符串長(zhǎng)度)即capacity=16+初始字符串長(zhǎng)度;

2.一旦length大于capacity時(shí),capacity便在前一次的基礎(chǔ)上加1后倍增;

例如:

length=1;capacity=17;//初始長(zhǎng)度
length=5;capacity=17;//
length=17;capacity=17;//
length=18;capacity=(capacity+1)*2=36;//第一次倍增
............
length=37;capacity=(capacity+1)*2=74;//第二次倍增
............

但有如下特殊情況:

    StringBuffer sb3=new StringBuffer("a");
        System.out.println("length="+sb3.length());//length=1
        System.out.println("capacity="+sb3.capacity());//capacity=17;
        System.out.println("--------------------");
        sb3.append("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        System.out.println("length="+sb3.length());//length=20;
        System.out.println("capacity="+sb3.capacity());//capacity=40;

當(dāng)length>capacity時(shí),capacity倍增仍達(dá)不到length的長(zhǎng)度,這種現(xiàn)象稱為跨階,此時(shí),capacity將根據(jù)length的實(shí)際大小設(shè)置長(zhǎng)度,此后將按照直接倍增的方式增長(zhǎng)(不將length+1)

StringBuffer類初始容量及擴(kuò)容

StringBuffer類可以創(chuàng)建可修改的字符串序列

該類有StringBuffer(),StringBuffer(int size),StringBuffer(String s)三個(gè)改造方法。

1.StringBuffer()的初始容量可以容納16個(gè)字符,當(dāng)該對(duì)象的實(shí)體存放的字符的長(zhǎng)度大于16時(shí),實(shí)體容量就自動(dòng)增加。StringBuffer對(duì)象可以通過(guò)length()方法獲取實(shí)體中存放的字符序列長(zhǎng)度,通過(guò)capacity()方法來(lái)獲取當(dāng)前實(shí)體的實(shí)際容量。

2.StringBuffer(int size)可以指定分配給該對(duì)象的實(shí)體的初始容量參數(shù)為參數(shù)size指定的字符個(gè)數(shù)。當(dāng)該對(duì)象的實(shí)體存放的字符序列的長(zhǎng)度大于size個(gè)字符時(shí),實(shí)體的容量就自動(dòng)的增加。以便存放所增加的字符。

3.StringBuffer(String s)可以指定給對(duì)象的實(shí)體的初始容量為參數(shù)字符串s的長(zhǎng)度額外再加16個(gè)字符。當(dāng)該對(duì)象的實(shí)體存放的字符序列長(zhǎng)度大于size個(gè)字符時(shí),實(shí)體的容量自動(dòng)的增加,以便存放所增加的字符。

接下來(lái)介紹StringBuffer()怎樣擴(kuò)容:

首先我們需要知道StringBuffer和StringBuilder類都繼承了抽象類AbstractStringBuilder類;

源碼都調(diào)用父類來(lái)進(jìn)行初始化:

StringBuffer(String s)的初始化:

擴(kuò)容算法:

使用append()方法在字符串后面追加?xùn)|西的時(shí)候,如果長(zhǎng)度超過(guò)了該字符串存儲(chǔ)空間大小了就需要進(jìn)行擴(kuò)容:構(gòu)建新的存儲(chǔ)空間更大的字符串,將久的復(fù)制過(guò)去;

再進(jìn)行字符串a(chǎn)ppend添加的時(shí)候,會(huì)先計(jì)算添加后字符串大小,傳入一個(gè)方法:ensureCapacityInternal 這個(gè)方法進(jìn)行是否擴(kuò)容的判斷,需要擴(kuò)容就調(diào)用expandCapacity方法進(jìn)行擴(kuò)容:

嘗試將新容量擴(kuò)為大小變成2倍+2 if 判斷一下 容量如果不夠,直接擴(kuò)充到需要的容量大小。

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

相關(guān)文章

  • java?Collection集合接口的介紹和使用詳解

    java?Collection集合接口的介紹和使用詳解

    這篇文章主要為大家介紹了java?Collection集合接口的介紹和使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 解決Hmily與Feign沖突報(bào)錯(cuò) NullPointerException的問(wèn)題

    解決Hmily與Feign沖突報(bào)錯(cuò) NullPointerException的問(wèn)題

    這篇文章主要介紹了解決Hmily與Feign沖突報(bào)錯(cuò) NullPointerException的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • idea中maven本地倉(cāng)庫(kù)jar包打包失敗和無(wú)法引用的問(wèn)題解決

    idea中maven本地倉(cāng)庫(kù)jar包打包失敗和無(wú)法引用的問(wèn)題解決

    本文主要介紹了idea中maven本地倉(cāng)庫(kù)jar包打包失敗和無(wú)法引用的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 淺談java類和對(duì)象

    淺談java類和對(duì)象

    這篇文章主要介紹了淺談java類和對(duì)象,對(duì)于面向?qū)ο蟮拈_發(fā)來(lái)講也分為三個(gè)過(guò)程:OOA(面向?qū)ο蠓治觯?、OOD(面向?qū)ο笤O(shè)計(jì))、OOP(面向?qū)ο缶幊蹋?,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • mybatis generator只能生成insert和selectAll的操作

    mybatis generator只能生成insert和selectAll的操作

    這篇文章主要介紹了mybatis generator只能生成insert和selectAll的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 很簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理

    很簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理

    這篇文章主要以實(shí)例的方式為大家詳細(xì)介紹了簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Java如何利用Mybatis進(jìn)行數(shù)據(jù)權(quán)限控制詳解

    Java如何利用Mybatis進(jìn)行數(shù)據(jù)權(quán)限控制詳解

    這篇文章主要介紹了Java如何利用Mybatis進(jìn)行數(shù)據(jù)權(quán)限控制詳解,數(shù)據(jù)權(quán)限控制最終的效果是會(huì)要求在同一個(gè)數(shù)據(jù)請(qǐng)求方法中,根據(jù)不同的權(quán)限返回不同的數(shù)據(jù)集,而且無(wú)需并且不能由研發(fā)編碼控制。,需要的朋友可以參考下
    2019-06-06
  • java常用工具類 Reflect反射工具類、String字符串工具類

    java常用工具類 Reflect反射工具類、String字符串工具類

    這篇文章主要為大家詳細(xì)介紹了java常用工具類,包括Reflect反射工具類、String字符串工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Springboot3整合Mybatis3的完整步驟記錄

    Springboot3整合Mybatis3的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于Springboot3整合Mybatis3的完整步驟,Spring Boot和MyBatis分別是兩個(gè)功能強(qiáng)大的框架,它們的協(xié)同使用可以極大地簡(jiǎn)化數(shù)據(jù)訪問(wèn)層的開發(fā),提高整體的開發(fā)效率,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • java環(huán)境配好后jar文件打開命令框閃退(無(wú)打開方式,無(wú)反應(yīng))解決辦法

    java環(huán)境配好后jar文件打開命令框閃退(無(wú)打開方式,無(wú)反應(yīng))解決辦法

    在Java開發(fā)中我們經(jīng)常會(huì)遇到運(yùn)行Jar包時(shí)閃退的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于java環(huán)境配好后jar文件打開命令框閃退(無(wú)打開方式,無(wú)反應(yīng))的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04

最新評(píng)論

三原县| 乐安县| 大丰市| 开封市| 崇礼县| 大化| 肇源县| 车致| 焦作市| 女性| 洛扎县| 南康市| 罗山县| 正安县| 精河县| 阿克| 舟山市| 清新县| 友谊县| 象州县| 西吉县| 土默特右旗| 白玉县| 黑龙江省| 望城县| 游戏| 德格县| 台北市| 留坝县| 内丘县| 新干县| 尚志市| 葵青区| 荥经县| 平江县| 尼玛县| 高雄市| 安西县| 德令哈市| 土默特右旗| 凭祥市|