append() är en Java-metod för klasserna StringBuilder och StringBuffer som lägger till ett värde till en aktuell sekvens. Även om du inte visste vad append() -metoden är, har du förmodligen redan använt den implicit. Detta hände när du sammanfogade strängar i Java med operatorn +. Poängen är att strängsammansättning i Java implementeras med klassen StringBuilder eller StringBuffer och deras append()- metod.
Mycket kortfattat om String, StringBuffer och StringBuilder
Som du säkert vet är String-klassen slutlig (den har inga underordnade klasser) och oföränderlig (instanser av denna klass kan inte ändras efter skapandet). Faktum är att, på grund av String-klassens oföränderlighet, skapas nya stränginstanser som ett resultat av varje operation, och gamla kasseras, vilket genererar mycket skräp. För att hantera genereringen av tillfälligt skräp på grund av modifieringar av String-objektet kan du använda klasserna StringBuffer eller StringBuilder. Den största skillnaden mellan de två sistnämnda är att StringBuffer är Synchronized medan StringBuilder inte är det. Använd därför StringBuffer för strängar som kommer att modifieras ofta i en flertrådig miljö och StringBuilder i en enkeltrådig miljö.Append() i StringBuilder och StringBuffer
append() är en av de bästa metoderna för klasserna StringBuilder och StringBuffer. Den lägger till ett nytt värde till den aktuella sekvensen. Det finns 13 olika överbelastade append() -metoder i både StringBuffer- och StringBuilder-klasserna. Låt oss titta på append-metoden för StringBuilder. Hur som helst, de fungerar exakt likadant när det gäller StringBuffer.- public StringBuilder append(boolesk 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(dubbel d)
- public StringBuilder append(float f)
- public StringBuilder append(int i)
- public StringBuilder append(lång 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) är en metod som gör det möjligt att lägga till ett heltal till ett befintligt StringBuilder-objekt. Låt oss ta en titt på exemplen på att använda 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);
Utgången här blir:
Jag älskar Java 14
Vad hände här? Först skapade vi en StringBuilder med namnet s med värdet "I love Java". Lägg sedan till ett heltal 14 med append(int) . Strängt taget lade vi inte till ett heltal, utan strängen "14" och fick ett uppdaterat StringBuilder-värde till "Jag älskar Java 14". Således förvandlar metoden argumentet till ett StringBuilder-objekt, binder det till ett befintligt StringBuilder-objekt och returnerar ett uppdaterat.
StringBuilder append() exempel för Object, int, boolean och String-argument
Samma historia kommer att vara med alla andra överbelastade metoder med nummer, sträng, char eller arrayelement. Låt oss skapa en LegoBrick Class and Color enum för att demonstrera den offentliga StringBuilder append(Object obj) -metoden.
//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 +
'}';
}
}
Låt oss nu skapa en AppendDemo Class där vi kommer att visa tillägg av en grundläggande StringBuilder med String, int, LegoBrick och boolean. Låter konstigt, men det fungerar!
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));
}
}
Utgången är:
Jag älskar Jag älskar Java Jag älskar Java14 Jag älskar Java14LegoBrick{color=RED, isConnected=false} Jag älskar Java14LegoBrick{color=RED, isConnected=false}true
Först skapade och visade vi StringBuilder "I love", sedan först läggs det till sekventiellt med append()- metoden en String, ett int-nummer, en String-representation av ett objekt och en boolean.
StringBuilder append(char[] cstr, int set, int length)
Låt oss titta på metoden append() med tre parametrar. Den lägger till en representation av en undergrupp av en given char-array till strängen. Så här:- cstr är en uppsättning tecken som ska läggas till
- ställ in indexet för det första tecknet som ska läggas till
- längd är antalet tecken som ska läggas till.
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);
}
}
Utgången är:
Jag älskar Java
StringBuilder append()-metoder med CharSequence-argument
Du kanske har lagt märke till två metoder som har CharSequence som argument.- 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);
}
}
Utgången är:
Detta är String Detta är StringBuilder min StringBuilder Detta är StringBuilder min StringBuilder Detta är StringBuilder Det här är String min StringBuilder Det här är StringBuilder Det här är String är
Vi skapade två CharSequences, band String och StringBuilder till dem och skrev ut dem. Vi kan inte applicera metoden append() direkt på myStringBuilder, eftersom CharSequence inte har den här metoden (om du inte förstår varför, måste du ta reda på om arv samt utvidgning och försmalning av referenstyper). Därför skapar vi en StringBuilder med och sammanfogar med hjälp av append-metoden sekventiellt med både CharSequence. I slutet lade vi till vår StringBuilder med underföljden "is" ("i" är ett 5:e element i myStringBuilder och s är det 6:e. Kom ihåg att i metoden är elementet som anges som end exkluderat från undersekvensen.
Hur är det med StringBuffer append()?
StringBuffer.append har också 13 varianter av metoden och de fungerar precis på samma sätt som StringBuilder.- public StringBuffer tillägg(booleskt b)
- public StringBuffer tillägg (char c)
- public StringBuffer append(char[] str)
- public StringBuffer append(char[] str, int offset, int len)
- public StringBuffer tillägg(dubbel d)
- public StringBuffer append(float f)
- public StringBuffer tillägg (int i)
- public StringBuffer tillägg (lång lng)
- public StringBuffer tillägg(CharSequence s)
- public StringBuffer append(CharSequence s, int start, int end)
- public StringBuffer tillägg(Object obj)
- public StringBuffer append(String str)
- public StringBuffer tillägg(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);
}
}
Utgången är:
Jag älskar Java Jag älskar Java14
Du kan göra det med alla exempel i den här artikeln. De kommer att fungera!
GO TO FULL VERSION