append()是 StringBuilder 和 StringBuffer 類的一種 Java 方法,用於將一些值附加到當前序列。即使您不知道append()方法是什麼,您也可能已經隱含地使用了它。當您使用 + 運算符連接 Java 中的字符串時會發生這種情況。關鍵是 Java 中的字符串連接是使用 StringBuilder 或 StringBuffer 類及其append()方法實現的。
非常簡要地介紹 String、StringBuffer 和 StringBuilder
您可能知道 String 類是最終的(它沒有子類)並且是不可變的(此類的實例在創建後無法修改)。事實上,由於 String 類的不可變性,每次操作都會創建新的字符串實例,並丟棄舊的,從而產生大量垃圾。要處理因修改 String 對象而產生的臨時垃圾,可以使用 StringBuffer 或 StringBuilder 類。後兩者之間的主要區別在於 StringBuffer 是同步的,而 StringBuilder 不是。因此,對於在多線程環境中頻繁修改的字符串,使用 StringBuffer,在單線程環境中使用 StringBuilder。
StringBuilder 和 StringBuffer 中的 Append()
append()是 StringBuilder 和 StringBuffer 類的頂級方法之一。它將一個新值附加到當前序列。StringBuffer 和 StringBuilder 類中有 13 種不同的重載append()方法。讓我們看一下 StringBuilder 的 append 方法。不管怎樣,對於 StringBuffer,它們的工作方式完全相同。- 公共 StringBuilder 追加(布爾 b)
- 公共 StringBuilder 追加(字符 c)
- public StringBuilder append(char[] str)
- public StringBuilder append(char[] str, int offset, int len)
- 公共 StringBuilder 追加(CharSequence cs)
- public StringBuilder append(CharSequence cs, int start, int end)
- 公共 StringBuilder 追加(雙 d)
- 公共 StringBuilder 追加(浮動 f)
- 公共 StringBuilder 追加(int i)
- 公共 StringBuilder 追加(long lng)
- 公共 StringBuilder 追加(對像對象)
- 公共 StringBuilder 附加(字符串 str)
- 公共 StringBuilder 追加(StringBuffer sb)
Java.lang.StringBuilder.append(int i)
java.lang.StringBuilder.append(int i)是一種允許將整數附加到現有 StringBuilder 對象的方法。讓我們看一下使用Java.lang.StringBuilder.append(int i)的例子:
StringBuilder s = new StringBuilder(“I love Java ”);
int i = 14;
//the method appends StringBuilder and integer
s.append(i);
System.out.println(s);
這裡的輸出將是:
我愛 Java 14
這裡發生了什麼?首先,我們創建了一個名為 s 的 StringBuilder,值為“I love Java”。然後使用append(int)添加一個整數 14 。嚴格來說,我們添加的不是整數,而是字符串“14”,並將更新的 StringBuilder 值更新為“I love Java 14”。因此,該方法將參數轉換為 StringBuilder 對象,將其綁定到現有的 StringBuilder 對象,並返回更新後的對象。
Object、int、boolean 和 String 參數的 StringBuilder append() 示例
同樣的情況也適用於所有其他具有數字、字符串、字符或數組元素的重載方法。讓我們創建一個 LegoBrick 類和 Color 枚舉來演示 public StringBuilder append(Object obj)方法。
//enum with colors
public enum Color {
RED, YELLOW, BLUE;
}
//LegoBrick Class code
public class LegoBrick {
Color color;
boolean isConnected;
public void connect() {
System.out.println("This brick is connected");
this.isConnected = true;
}
public void disconnect() {
System.out.println("Disconnected");
isConnected = false;
}
public LegoBrick(Color color, boolean isConnected) {
this.color = color;
this.isConnected = isConnected;
}
public Color getColor() {
return color;
}
public boolean isConnected() {
return isConnected;
}
@Override
public String toString() {
return "LegoBrick{" +
"color=" + color +
", isConnected=" + isConnected +
'}';
}
}
現在讓我們創建一個 AppendDemo 類,我們將在其中展示使用 String、int、LegoBrick 和 boolean 附加基本 StringBuilder。聽起來很奇怪,但它確實有效!
public class AppendDemo {
public static void main(String[] args) {
StringBuilder s = new StringBuilder("I love");
System.out.println(s)
//the method appends StringBuilder and String
s.append(" Java");
System.out.println(s);
//the method appends StringBuilder and int
s.append(14);
System.out.println(s);
LegoBrick legoBrick = new LegoBrick(Color.RED, false);
//the method appends StringBuilder and LegoBrick
s.append(legoBrick);
System.out.println(s);
//the method appends StringBuilder and boolean
System.out.println(s.append(5<7));
}
}
輸出是:
我愛我愛 Java 我愛 Java14 我愛 Java14LegoBrick{color=RED, isConnected=false} 我愛 Java14LegoBrick{color=RED, isConnected=false}true
首先,我們創建並顯示 StringBuilder“I love”,然後首先,我們使用append()方法 依次向其添加一個字符串、一個 int 數字、一個對象的字符串表示和一個布爾值。
StringBuilder append(char[] cstr, int set, int length)
讓我們看一下帶有三個參數的append()方法。它將給定 char 數組的子數組的表示添加到字符串中。所以在這裡:- cstr是要追加的字符數組
- 將其設置為要追加的第一個字符的索引
- length是要附加的字符數。
public class AppendDemo {
// an example of using append(char[], cStr, int set, int length)
public static void main(String[] args) {
StringBuilder s = new StringBuilder("I love ");
//here is a char's array, part of which we are going to append to s
char[] cStr = new char[]
{'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
//we append 4 elements of cStr from the 4th element "J"
s.append(cStr, 4, 4);
System.out.println(s);
}
}
輸出是:
我愛爪哇
帶有 CharSequence 參數的 StringBuilder append() 方法
您可能已經註意到有兩個方法將 CharSequence 作為參數。- 公共 StringBuilder 追加(CharSequence cs)
- public StringBuilder append(CharSequence cs, int start, int end)
public class CharSequenceDemo {
public static void printCharSequence(CharSequence ch) {
System.out.println(ch);
}
public static void main(String[] args) {
CharSequence myString = new String("This is String ");
printCharSequence(myString);
CharSequence myStringBuilder = new StringBuilder("This is StringBuilder ");
printCharSequence(myStringBuilder);
StringBuilder s = new StringBuilder("my StringBuilder ");
//StringBuilder.append
s.append(myStringBuilder);
System.out.println(s);
//StringBuilder.append
s.append(myString);
System.out.println(s);
s.append(myString, 5,7);
System.out.println(s);
}
}
輸出是:
這是 String 這是 StringBuilder 我的 StringBuilder 這是 StringBuilder 我的 StringBuilder 這是 StringBuilder 這是 String 我的 StringBuilder 這是 StringBuilder 這是 String 是
我們創建了兩個 CharSequence,將 String 和 StringBuilder 綁定到它們並打印出來。我們不能直接對myStringBuilder應用append()方法,因為CharSequence沒有這個方法(如果你不明白為什麼,你需要弄清楚繼承以及引用類型的擴展和縮小)。因此,我們創建一個 StringBuilder 並使用 append 方法順序連接兩個 CharSequence。最後,我們為 StringBuilder 添加了子序列“is”(“i”是 myStringBuilder 的第 5 個元素,s 是第 6 個元素。請記住,在該方法中,指定為 end 的元素被排除在子序列之外。
StringBuffer append() 怎麼樣?
StringBuffer.append也有 13 種方法變體,它們的工作方式與 StringBuilder 完全相同。- 公共 StringBuffer 附加(布爾 b)
- public StringBuffer append (char c)
- public StringBuffer append (char[] str)
- public StringBuffer append (char[] str, int offset, int len)
- 公共 StringBuffer 附加(雙 d)
- public StringBuffer append (float f)
- public StringBuffer append (int i)
- 公共 StringBuffer 附加(long lng)
- 公共 StringBuffer 附加(CharSequence s)
- public StringBuffer append (CharSequence s, int start, int end)
- public StringBuffer append (Object obj)
- public StringBuffer append (String str)
- 公共 StringBuffer 附加(StringBuffer sb)
public class AppendDemo {
// an example of using append(char[], cStr, int set, int length)
public static void main(String[] args) {
StringBuffer s = new StringBuffer("I love ");
//here is a char's array, part of which we are going to append to s
char[] cStr = new char[]
{'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
//we append 4 elements of cStr from the 4th element "J"
//with StringBuffer.append
s.append(cStr, 4, 4);
System.out.println(s);
//StringBuffer.append adds int 14 to s
s.append(14);
System.out.println(s);
}
}
輸出是:
我愛 Java 我愛 Java14
您可以使用本文的每個示例來做到這一點。他們會工作的!
GO TO FULL VERSION