關鍵區別–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 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的區別