字串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

String、StringBuffer和stringbuilder是Java中的類。字串在Java程式設計中被廣泛使用。一旦建立了字串物件,就不可能更改它們。每次字串發生更改時,它都會建立一個新字串。即使是連線到現有字串,它也會建立一個新字串。這會導致記憶體浪費。使用Java中的StringBuffer和StringBuilder類來修改字串。String、StringBuffer和Str...

關鍵區別–java中的string與stringbuffer與stringbuilder

String、StringBuffer和stringbuilder是Java中的類。字符串在Java編程中被廣泛使用。一旦創建了字符串對象,就不可能更改它們。每次字符串發生更改時,它都會創建一個新字符串。即使是連接到現有字符串,它也會創建一個新字符串。這會導致內存浪費。使用Java中的StringBuffer和StringBuilder類來修改字符串。String、StringBuffer和StringBuilder在Java中的主要區別在於String是一個類,用於創建String類型的對象,StringBuffer是一個用於修改提供線程安全性的字符串的類,StringBuilder是一個用於修改不提供線程安全性的字符串的類。

目錄

1. 概述和主要區別
2. Java中的字符串是什麼
3. 什麼是Java中的StringBuffer
4. 什麼是Java中的StringBuilder
5. StringBuilder與StringBuffer中字符串的相似性
6. 並列比較——以表格形式顯示的Java中的String與StringBuffer與StringBuilder
7. 摘要

什麼是java字符串(string in java)?

字符串類在java.lang語言包裹。程序員每次創建字符串時,它都是String類型的對象。字符串是不可變的,這意味著一旦創建了對象,就不能更改它。使用諸如Integer、Byte、Float、Double等包裝類創建的對象也是不可變的。字符串文字用雙引號括起來。e、 g.“你好世界”。每次創建字符串文本時,Java虛擬機(JVM)都會檢查字符串常量池。如果字符串存在,則返回對字符串常量池的引用。如果是新字符串,則在字符串常量池中創建該對象。

字符串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

圖01:使用String、StringBuffer和StringBuilder的Java程序

參考下面的代碼。

String s1=“你好”;

s1=s1+“世界”;

系統輸出打印項數(s1);

在第一條語句中,s1指的是字符串常量池中的“Hello”。在第二條語句中,JVM不更改現有的字符串。相反,它創建了一個新字符串“Hello World”,s1現在引用這個新字符串。現有的“Hello”對象仍然存在於字符串常量池中。

如果有密碼,

String s1=“你好”;

串s2=s1;

s1和s2都將引用字符串對象“Hello”。

什麼是java中的stringbuffer(stringbuffer in java)?

StringBuffer類用於使字符串對象可變。因此,可以修改這些對象。StringBuffer定義了四個構造函數。StringBuffer()、StringBuffer(int size)、StringBuffer(String str)、StringBuffer(charSequence[]ch)

參考下面的代碼,

StringBuffers1=新StringBuffer(“Hello”);

s1.追加(“世界”);

System.out.println(s1);

在語句1中,s1引用堆中的“Hello”對象。對象是可變的,因為它是使用StringBuffer創建的。在語句2中,“World”被附加到同一個“Hello”字符串對象之後。

使用StringBuffer類創建的字符串對象可以節省內存。StringBuffer提供線程安全性,因為兩個線程不能同時訪問StringBuffer類中的同一個方法。線程安全性會降低StringBuffer性能。StringBuffer類包含append()、insert()、reverse()、replace()等方法。

什麼是java中的stringbuilder(stringbuilder in java)?

StringBuilder類用於使字符串對象可變。因此,可以修改這些對象。該功能類似於StringBuffer,但這不提供線程安全性。StringBuilder有一些構造函數,比如StringBuilder()、StringBuilder(int size)、StringBuilder(StringStr)。

請參閱下面的代碼。

StringBuilder s1=新建StringBuilder(“你好”);

s1.追加(“世界”);

System.out.println(s1);

在語句1中,s1引用堆中的“Hello”對象。對象是可變的,因為它是使用StringBuilder創建的。在語句2中,“World”被附加到同一個“Hello”字符串對象之後。不需要創建全新的字符串對象。

使用StringBuilder類創建的字符串對象可以節省內存。與StringBuffer不同,StringBuilder不提供線程安全性,因為兩個線程可以同時訪問StringBuilder類中的同一個方法。StringBuilder類包含append()、insert()、reverse()、replace()等方法。

什麼是java中string、stringbuffer和stringbuilder的相似性(the similarity between string, stringbuffer and stringbuilder in java)?

  • 所有這些都可以用來創建字符串。

字符串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

String vs StringBuffer vs StringBuilder
字符串 string是一個Java類,用於創建string類型的對象,string是一個字符序列。
字符串緩衝區 StringBuffer是一個Java類,用於創建字符串對象,可以使用線程安全性對其進行修改。
字符串拼接 StringBuilder是一個用於創建字符串對象的類,可以在沒有線程安全性的情況下對其進行修改。
易變性
字符串 字符串是一個不可變的類。
字符串緩衝區 StringBuffer是一個可變類。
字符串拼接 StringBuilder是一個可變類。
螺紋安全性
字符串 字符串的方法是線程安全的。
字符串緩衝區 StringBuffer的方法是線程安全的和同步的。
字符串拼接 StringBuilder的方法不是線程安全的,也不是同步的。
性能
字符串 繩子快了。
字符串緩衝區 StringBuffer速度慢。
字符串拼接 StringBuilder速度很快。

總結 - 一串(string) vs. 字符串緩衝區(stringbuffer)

String、StringBuffer和StringBuilder看起來是相同的,但是它們有不同的含義。所有這些都是Java類。在Java中String、StringBuffer和StringBuilder的區別在於,String是創建String類型的對象的類,String是一組字符,StringBuffer是用來修改字符串並提供線程安全性的類,而StringBuilder是一個用於修改不提供線程安全性的字符串的類。

下載pdf string vs stringbuffer vs stringbuilder

你可以下載這篇文章的PDF版本,並按照引文說明離線使用。請在這裡下載PDF版本StringBuffer和Java中StringBuilder的區別

引用
  • 發表於 2020-10-02 19:22
  • 閱讀 ( 46 )
  • 分類:科技

你可能感興趣的文章

扔(throw)和丟擲java(throws in java)的區別

關鍵區別——java中的throw與throws 程式設計時可能會出錯。程式中的錯誤會產生意外的結果,也可能會終止程式的執行。因此,正確地檢測和管理錯誤,才能正確地執行程式。錯誤可以有兩種型別。它們是編譯時錯誤和執行時...

  • 發佈於 2020-09-21 19:02
  • 閲讀 ( 54 )

包裹(package)和java介面(interface in java)的區別

Java中的Package和Interface的主要區別在於,Package有助於對類進行有條理的分類以方便訪問和維護,而Interface則有助於實現多個繼承和實現抽象。 Java是最流行的程式語言之一。Java的主要優點是它支援面向物件程式設計。這種方...

  • 發佈於 2020-10-18 11:01
  • 閲讀 ( 52 )

等於(equals)和java中的hashcode(hashcode in java)的區別

...是一種方法,類透過該方法隱式或顯式地將儲存在類例項中的資料分解為單個雜湊值,該雜湊值是一個32位有符號整數。在Java中,equals和hashCode之間的關鍵區別在於equals用於比較兩個物件,而hashCode用於雜湊,以決定物件應歸入...

  • 發佈於 2020-10-19 00:40
  • 閲讀 ( 53 )

打破(break)和在java中繼續(continue in java)的區別

關鍵區別——java中的break與continue 在程式設計中,有時需要多次重複一個語句或一組語句。迴圈用於對同一組指令進行多次迭代。迴圈的一些例子是while迴圈、do while迴圈和for迴圈。在while迴圈中,首先計算測試表達式。如果...

  • 發佈於 2020-10-19 05:44
  • 閲讀 ( 63 )

包裝類(wrapper class)和java中的基元型別(primitive type in java)的區別

關鍵區別——java中的包裝類與原語型別 Java是一種流行的程式語言,用於開發各種應用程式。Java的一個優點是它支援面向物件程式設計(OOP)。使用OOP,可以使用物件對程式或軟體進行建模。類被用作建立物件的藍圖。有必...

  • 發佈於 2020-10-19 06:27
  • 閲讀 ( 92 )

靜止的(static)和java期末考試(final in java)的區別

關鍵區別——java中的靜態與最終版本 每種程式語言都有特定的語法。程式設計師在編寫程式時應該遵循這些語法。程式設計語言的關鍵字根據任務的不同具有特定的含義。它們由程式語言提供,不能用於使用者定義的變數、...

  • 發佈於 2020-10-19 07:48
  • 閲讀 ( 54 )

選中的(checked)和java中的未檢查異常(unchecked exception in java)的區別

關鍵區別——java中的檢查異常與未檢查異常 異常是執行時錯誤。有兩種型別的異常稱為檢查異常和未檢查異常。當發生選中的異常時,Java應用程式連線到外部資源,如檔案、裝置或資料庫。這些異常由編譯器檢查。檢查的...

  • 發佈於 2020-10-19 08:38
  • 閲讀 ( 63 )

變數(variables)和java中的資料字面值(data literals in java)的區別

...有各種型別的文字。它們是整數文字、浮點文字、字元和字串文字。整型字面值用於初始化整型資料型別(如byte、short、int和long)的變數。浮點字面值用於初始化資料型別為float和double的變數。浮點文字以f或f結尾,它是float型...

  • 發佈於 2020-10-19 08:52
  • 閲讀 ( 50 )

最終決賽(final finally)和用java完成(finalize in java)的區別

關鍵區別–java中的final vs finally vs finalize final、finally和finalize是Java程式設計中常用的術語。期末考試是一個關鍵詞。它可以用於變數、方法或類。宣告為final的變數只能初始化一次。他們不能改變。由於Java是一種支援面向物...

  • 發佈於 2020-10-19 15:24
  • 閲讀 ( 55 )

班(class)和結構(c)#(structure in c#)的區別

...使用系統; 名稱空間應用程式1{ 班級學生{ 國際學生ID; 字串名稱; 公共學生(int sid,string sname){ 學生ID=sid; 名稱=sname; } ~學生(); public void displayDetails(){ 慰問。WriteLine(“學生ID是{0}”,studentID); 慰問。WriteLine(...

  • 發佈於 2020-10-19 17:15
  • 閲讀 ( 52 )
aqc00526
aqc00526

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦