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

Java中String、StringBuffer、StringBuilder的區(qū)別詳解

 更新時(shí)間:2016年06月13日 10:17:23   作者:旭東的博客  
java中String、StringBuffer、StringBuilder是編程中經(jīng)常使用的字符串類,他們之間有什么區(qū)別呢?下面小編給大家總結(jié)了Java中String、StringBuffer、StringBuilder的區(qū)別詳解,需要的朋友參考下吧

 java中String、StringBuffer、StringBuilder是編程中經(jīng)常使用的字符串類,他們之間的區(qū)別也是經(jīng)常在面試中會(huì)問(wèn)到的問(wèn)題?,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:

public synchronized StringBuffer reverse() {
super.reverse();
return this;
}
public int indexOf(String str) {
return indexOf(str, ); //存在 public synchronized int indexOf(String str, int fromIndex) 方法
}

  StringBuilder并沒(méi)有對(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。

java中 String StringBuffer StringBuilder的區(qū)別小結(jié)

* String類是不可變類,只要對(duì)String進(jìn)行修改,都會(huì)導(dǎo)致新的對(duì)象生成。

* StringBuffer和StringBuilder都是可變類,任何對(duì)字符串的改變都不會(huì)產(chǎn)生新的對(duì)象。

  在實(shí)際使用時(shí),如果經(jīng)常需要對(duì)一個(gè)字符串進(jìn)行修改,例如插入、刪除等

* 但StringBuffer和StringBuilder有什么區(qū)別呢?

  StringBuffer是線程安全的,在多線程程序中是很方便使用的,但是程序的效率就會(huì)慢一點(diǎn)。

  StringBuilder不是線程安全的,在單線程中,比StringBuffer的效率要高。

* 綜合來(lái)說(shuō),三者的運(yùn)行時(shí)間:

    String > StringBuffer > StringBuilder  

相關(guān)文章

  • Java lock同步鎖使用實(shí)例解析

    Java lock同步鎖使用實(shí)例解析

    這篇文章主要介紹了Java lock同步鎖使用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java實(shí)現(xiàn)漢字轉(zhuǎn)拼音

    java實(shí)現(xiàn)漢字轉(zhuǎn)拼音

    這篇文章主要介紹了java實(shí)現(xiàn)漢字轉(zhuǎn)拼音的功能,感興趣的小伙伴們可以參考一下
    2015-12-12
  • mybatis根據(jù)表逆向自動(dòng)化生成代碼的實(shí)現(xiàn)

    mybatis根據(jù)表逆向自動(dòng)化生成代碼的實(shí)現(xiàn)

    若采用mybatis框架,數(shù)據(jù)庫(kù)新建表,手動(dòng)編寫的話,需要編寫大量的實(shí)體類、mapper文件、mapper.xml文件,都是一些重復(fù)且有規(guī)律的工作。我們可以引用插件,然后做配置,自動(dòng)生成這些文件,本文就來(lái)詳細(xì)的介紹一下
    2021-08-08
  • Java查找并高亮PDF文本過(guò)程解析

    Java查找并高亮PDF文本過(guò)程解析

    這篇文章主要介紹了Java查找并高亮PDF文本過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 如何給yml配置文件的密碼加密(SpringBoot)

    如何給yml配置文件的密碼加密(SpringBoot)

    這篇文章主要介紹了如何給yml配置文件的密碼加密(SpringBoot),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring @Bean注解的使用場(chǎng)景與案例實(shí)現(xiàn)

    Spring @Bean注解的使用場(chǎng)景與案例實(shí)現(xiàn)

    隨著SpringBoot的流行,我們現(xiàn)在更多采用基于注解式的配置從而替換掉了基于XML的配置,所以本篇文章我們主要探討基于注解的@Bean以及和其他注解的使用
    2023-03-03
  • SpringBoot application.yml和bootstrap.yml的區(qū)別

    SpringBoot application.yml和bootstrap.yml的區(qū)別

    本文主要介紹了SpringBoot application.yml和bootstrap.yml的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例

    使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例

    本篇文章主要介紹了使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java編程使用Runtime和Process類運(yùn)行外部程序的方法

    Java編程使用Runtime和Process類運(yùn)行外部程序的方法

    這篇文章主要介紹了Java編程使用Runtime和Process類運(yùn)行外部程序的方法,結(jié)合實(shí)例形式分析了java使用Runtime.getRuntime().exec()方法運(yùn)行外部程序的常見(jiàn)情況與操作技巧,需要的朋友可以參考下
    2017-08-08
  • MyBatis實(shí)現(xiàn)配置加載的步驟

    MyBatis實(shí)現(xiàn)配置加載的步驟

    本文主要介紹了MyBatis實(shí)現(xiàn)配置加載的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

治县。| 营山县| 齐齐哈尔市| 怀来县| 营山县| 巴彦县| 大埔区| 西乌珠穆沁旗| 普定县| 扶绥县| 喀什市| 阳城县| 施秉县| 桐乡市| 游戏| 和平区| 鄂州市| 竹北市| 丹阳市| 兰溪市| 永福县| 双辽市| 文水县| 隆林| 成安县| 定兴县| 浏阳市| 赞皇县| 凌海市| 尼木县| 无极县| 吉安县| 兴业县| 巨野县| 扎囊县| 西城区| 张家口市| 金沙县| 潼关县| 灌云县| 衡阳市|