append() ist eine Java-Methode in den Klassen StringBuilder und StringBuffer, die einen Wert an einen bestehenden String anhängt. Selbst wenn du nicht wusstest, was die append()-Methode ist, hast du sie wahrscheinlich schon implizit verwendet. Das geschieht, wenn du in Java Strings mit dem +-Operator verkettest. Entscheidend ist, dass die String-Verkettung in Java mit der Klasse StringBuilder oder StringBuffer und deren append()-Methoden implementiert wird.
Ein paar Worte zu String, StringBuffer und StringBuilder
Wie du wahrscheinlich weißt, ist die Klasse String final (sie hat keine Unterklassen) und unveränderlich (Instanzen dieser Klasse können nach der Erstellung nicht mehr verändert werden). Tatsächlich bedeutet die Unveränderlichkeit der String-Klasse, dass als Ergebnis jeder Operation neue String-Objekte erzeugt und alte gelöscht werden. All dies erzeugt eine Menge Müll. Um das Problem des temporären Mülls zu bewältigen, der beim Ändern eines String-Objekts erzeugt wird, kannst du die Klassen StringBuffer oder StringBuilder verwenden. Der Hauptunterschied zwischen ihnen ist, dass StringBuffer synchronisiert ist, während StringBuilder nicht synchronisiert ist. Verwende daher StringBuffer für Strings, die in einer Multithread-Umgebung häufig geändert werden, und StringBuilder in einer Single-Thread-Umgebung.append() in StringBuilder und StringBuffer
append() ist eine der wichtigsten Methoden der Klassen StringBuilder und StringBuffer (append Java). Die Methode hängt einen neuen Wert an die aktuelle Zeichenkette an (Java append to string). Es gibt 13 verschiedene überladene append()-Methoden in den beiden Klassen StringBuffer und StringBuilder. Schauen wir uns die append-Methode von StringBuilder an. So oder so, die Methoden funktionieren im Fall von StringBuffer exakt gleich.- public StringBuilder append(boolean b)
- public StringBuilder append(char c)
- public StringBuilder append(char[] str)
- public StringBuilder append(char[] str, int offset, int len)
- public StringBuilder append(CharSequence cs)
- public StringBuilder append(CharSequence cs, int start, int end)
- public StringBuilder append(double d)
- public StringBuilder append(float f)
- public StringBuilder append(int i)
- public StringBuilder append(long lng)
- public StringBuilder append(Object obj)
- public StringBuilder append(String str)
- public StringBuilder append(StringBuffer sb)
Java.lang.StringBuilder.append(int i)
java.lang.StringBuilder.append(int i) ist eine Methode, die das Anhängen einer Ganzzahl an ein bestehendes StringBuilder-Objekt ermöglicht. Schauen wir uns Beispiele für die Verwendung von Java.lang.StringBuilder.append(int i)an:
StringBuilder s = new StringBuilder(“I love Java ”);
int i = 14;
//the method appends StringBuilder and integer
s.append(i);
System.out.println(s);
Die Ausgabe ist dann:
Ich liebe Java 14
Was ist hier passiert? Zunächst haben wir einen StringBuilder namens s mit dem Wert „Ich liebe Java“ erstellt. Dann haben wir mit append(int) eine Ganzzahl, 14, hinzugefügt. Nun, streng genommen haben wir keine Ganzzahl hinzugefügt. Wir haben tatsächlich die Zeichenkette „14“ hinzugefügt und einen aktualisierten StringBuilder mit dem Wert „Ich liebe Java 14“ erhalten. Die Methode wandelt also das Argument in ein StringBuilder-Objekt um, bindet es an ein bestehendes StringBuilder-Objekt und gibt ein aktualisiertes zurück.
StringBuilder.append()-Beispiel für Object-, int-, boolean- und String-Argumente
Die Geschichte ist die gleiche für alle anderen überladenen Methoden mit numerischen, String-, Char- oder Array-Elementen. Lass uns eine LegoBrick-Klasse und ein Color-Enum erstellen, um die Methode public StringBuilder append(Object obj) zu demonstrieren.
//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 +
'}';
}
}
Nun wollen wir eine AppendDemo-Klasse erstellen, mit der wir das Anhängen eines einfachen StringBuilders an einen String, int, LegoBrick und boolean demonstrieren werden. Klingt komisch, aber es funktioniert!
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));
}
}
Die Ausgabe ist:
Ich liebe
Ich liebe Java
Ich liebe Java14
Ich liebe Java14LegoBrick{color=RED, isConnected=false}
Ich liebe Java14LegoBrick{color=RED, isConnected=false}true
Zuerst haben wir einen StringBuilder mit dem Wert „Ich liebe“ erstellt und angezeigt. Dann haben wir die append()-Methode verwendet, um nacheinander einen String, einen int und die String-Darstellungen eines Object und eines Boolean hinzuzufügen.
StringBuilder append(char[] cstr, int set, int length)
Schauen wir uns die append()-Methode mit drei Parametern an. Sie fügt dem String die String-Repräsentation einer Teilmenge des angegebenen Char-Arrays hinzu. In diesem Fall gilt:- cstr ist ein Array von Zeichen, die angehängt werden sollen
- set ist der Index des ersten anzuhängenden Zeichens
- length ist die Anzahl der Zeichen, die angehängt werden sollen
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);
}
}
Die Ausgabe ist:
Ich liebe Java
StringBuilder append()-Methoden mit einem CharSequence-Argument
Du hast vielleicht zwei Methoden bemerkt, die CharSequence als Argumente haben.- public StringBuilder append(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);
}
}
Die Ausgabe ist:
Dies ist String
Dies ist StringBuilder
Mein StringBuilder Dies ist StringBuilder
Mein StringBuilder Dies ist StringBuilder Dies ist String
Mein StringBuilder Dies ist StringBuilder Dies ist String is
Wir haben zwei CharSequences erzeugt, einen String und einen StringBuilder an sie gebunden und dann ausgegeben. Wir können die append()-Methode nicht direkt auf myStringBuilder anwenden, da CharSequence diese Methode nicht hat (wenn du nicht verstehst, warum, dann musst du dich sowohl mit Vererbung als auch mit dem Erweitern und Einschränken von Referenztypen beschäftigen). Dementsprechend erstellen wir einen StringBuilder und verwenden die append-Methode, um die beiden CharSequences sequentiell zu verketten. Am Ende haben wir die Teilsequenz „is“ an unseren StringBuilder angehängt: „i“ ist das 5. Element von myStringBuilder und „s“ ist das 6. Beachten Sie, dass die Methode das durch den Endindex angegebene Element ausschließt.
Was ist mit StringBuffer.append() (Java append)?
Die Methode StringBuffer.append hat ebenfalls 13 Varianten, die genau so funktionieren wie bei StringBuilder.- public StringBuffer append (boolean b)
- public StringBuffer append (char c)
- public StringBuffer append (char[] str)
- public StringBuffer append (char[] str, int offset, int len)
- public StringBuffer append (double d)
- public StringBuffer append (float f)
- public StringBuffer append (int i)
- public StringBuffer append (long lng)
- public StringBuffer append (CharSequence s)
- public StringBuffer append (CharSequence s, int start, int end)
- public StringBuffer append (Object obj)
- public StringBuffer append (String str)
- public StringBuffer append (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);
}
}
Die Ausgabe ist:
Ich liebe Java
Ich liebe Java14
Das kannst du mit jedem Beispiel in diesem Artikel tun. Es wird funktionieren!
GO TO FULL VERSION