千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  Java面試題  > String、StringBuffer、StringBuilder有什么區別?

String、StringBuffer、StringBuilder有什么區別?

來源:千鋒教育
發布人:syq
時間: 2022-11-17 18:34:19 1668681259

  1.String

  String類是不可變的,所謂不可變意思就是創建一個類后任何對String的改變都會引發新的String對象的生成;

  讓我們舉個例子來看看就明白了:

  String str ="abc";

  str = str +"def";//這一步jvm會再次創建一個String對象

  第二次其實jvm又生成了一個String類,而不是直接覆蓋原來的"abc",因此我們說String類是不可改變類。這一種特性會帶來一個問題,每次拼接都要創建都要創建一次對象,當我們要拼接大量字符串的時候,效率會變得非常非常慢。

String、StringBuffer、StringBuilder

  2.StringBuffer

  StringBuffer不同于String的是StringBuffer是可變的,一樣的我們來舉個例子看看:

  StringBuffer sb =new StringBuffer("abc");

  sb.append("efg");//并沒有創建一個新的對象

  這里第二步并沒有產生一個新的對象,而是在原來的基礎上追加字符串,這種方式在拼接字符串的時候效率肯定比String要高得多。

  3.StringBuilder

  StringBuffer和StringBuilder類的區別也是如此,他們的原理和操作基本相同,區別在于StringBuffer支持并發操作,線性安全的,適合多線程中使用。

  StringBuilder不支持并發操作,線性不安全的,不適合多線程中使用。新引入的StringBuilder類不是線程安全的,但其在單線程中的性能比StringBuffer高。

  點評:上面大概介紹了String、StringBuffer、StringBuilder的區別,那么我們要處理字符串的時候要選擇哪個呢?總結如下:

  1.如果要操作少量的數據用 String

  2.單線程操作字符串緩沖區下操作大量數據用StringBuilder

  3.多線程操作字符串緩沖區下操作大量數據用StringBuffer

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲岛国精品视频在线 | 亚洲日本成本线在观看 | 中文字幕的a级一片 | 伊人久久五月丁香综合中文亚洲 | 制服丝袜国产精品主 | 日韩欧美国产综合 |