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