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

Java中String、StringBuffer、StringBuilder的區(qū)別介紹

 更新時(shí)間:2015年06月30日 09:10:22   投稿:junjie  
這篇文章主要介紹了Java中String、StringBuffer、StringBuilder的區(qū)別介紹,本文講解了可變與不可變、是否多線程安全、gBuilder與StringBuffer共同點(diǎn)等內(nèi)容,需要的朋友可以參考下

java中String、StringBuffer、StringBuilder是編程中經(jīng)常使用的字符串類,他們之間的區(qū)別也是經(jīng)常在面試中會(huì)問到的問題?,F(xiàn)在總結(jié)一下,看看他們的不同與相同。

1.可變與不可變

  String類中使用字符數(shù)組保存字符串,如下就是,因?yàn)橛小癴inal”修飾符,所以可以知道string對(duì)象是不可變的。

    private final char value[];

  StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,如下就是,可知這兩種對(duì)象都是可變的。

    char[] value;

2.是否多線程安全

  String中的對(duì)象是不可變的,也就可以理解為常量,顯然線程安全。

  AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。

  StringBuffer對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線程安全的??慈缦略创a:

復(fù)制代碼 代碼如下:

public synchronized StringBuffer reverse() {
    super.reverse();
    return this;
}

public int indexOf(String str) {
    return indexOf(str, 0);        //存在 public synchronized int indexOf(String str, int fromIndex) 方法
}

StringBuilder并沒有對(duì)方法進(jìn)行加同步鎖,所以是非線程安全的。

3.StringBuilder與StringBuffer共同點(diǎn)

  StringBuilder與StringBuffer有公共父類AbstractStringBuilder(抽象類)。

  抽象類與接口的其中一個(gè)區(qū)別是:抽象類中可以定義一些子類的公共方法,子類只需要增加新的功能,不需要重復(fù)寫已經(jīng)存在的方法;而接口中只是對(duì)方法的申明和常量的定義。

  StringBuilder、StringBuffer的方法都會(huì)調(diào)用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer會(huì)在方法上加synchronized關(guān)鍵字,進(jìn)行同步。

  最后,如果程序不是多線程的,那么使用StringBuilder效率高于StringBuffer。

相關(guān)文章

  • IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    這篇文章主要介紹了IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 詳解Java字節(jié)碼編程之非常好用的javassist

    詳解Java字節(jié)碼編程之非常好用的javassist

    這篇文章主要介紹了詳解Java字節(jié)碼編程之非常好用的javassist,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用springboot開發(fā)的第一個(gè)web入門程序的實(shí)現(xiàn)

    使用springboot開發(fā)的第一個(gè)web入門程序的實(shí)現(xiàn)

    這篇文章主要介紹了使用springboot開發(fā)的第一個(gè)web入門程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring boot搭建郵件服務(wù)的完整步驟

    Spring boot搭建郵件服務(wù)的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring boot搭建郵件服務(wù)的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Spring集成Mybatis過程詳細(xì)講解

    Spring集成Mybatis過程詳細(xì)講解

    mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Mybatis-plus案例及用法實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 詳解Java編程中protected修飾符與static修飾符的作用

    詳解Java編程中protected修飾符與static修飾符的作用

    這篇文章主要介紹了Java編程中protected關(guān)鍵字與static關(guān)鍵字的作用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • mybatis 有時(shí)update語句執(zhí)行無效的解決方案

    mybatis 有時(shí)update語句執(zhí)行無效的解決方案

    這篇文章主要介紹了在項(xiàng)目里mybatis有時(shí)update語句執(zhí)行無效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java特性?Lambda?表達(dá)式和函數(shù)式接口

    Java特性?Lambda?表達(dá)式和函數(shù)式接口

    這篇文章主要介紹了Java特性?Lambda?表達(dá)式和函數(shù)式接口,Lambda表達(dá)式基于函數(shù)式編程思想,也可以稱為閉包,是Java?8引入的重要新特性,?Lambda允許把函數(shù)作為一個(gè)方法的參數(shù)
    2022-06-06
  • SpringBoot @Value注解支持配置自動(dòng)刷新能力擴(kuò)展方式

    SpringBoot @Value注解支持配置自動(dòng)刷新能力擴(kuò)展方式

    本文介紹了如何通過自定義注解和BeanPostProcessor實(shí)現(xiàn)SpringBoot中@Value注解的配置自動(dòng)刷新能力,主要步驟包括:定義一個(gè)支持動(dòng)態(tài)刷新的注解,實(shí)現(xiàn)配置的動(dòng)態(tài)變更,以及通過BeanPostProcessor掃描并刷新使用@Value注解的變量
    2024-12-12
  • IDEA無法使用Git?Pull的問題

    IDEA無法使用Git?Pull的問題

    本文主要介紹了IDEA無法使用Git?Pull的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

慈溪市| 昌宁县| 鹤庆县| 吐鲁番市| 陈巴尔虎旗| 清苑县| 闵行区| 古交市| 合江县| 延安市| 正镶白旗| 巴东县| 祁东县| 嘉兴市| 革吉县| 乐东| 闻喜县| 通化市| 乐昌市| 莒南县| 韶山市| 夏邑县| 芦山县| 岳西县| 当涂县| 沐川县| 板桥市| 太和县| 桃源县| 禄丰县| 灌云县| 治县。| 轮台县| 色达县| 武川县| 武邑县| 松原市| 许昌市| 灵山县| 德钦县| 启东市|