Java StringBuffer append() 方法



Java 的StringBuffer append()方法将各种参数的字符串表示形式追加到序列中。此方法是字符串连接技术的一部分,用于在 Java 中组合两个或多个字符串。

我们可能已经知道,字符串连接技术可以在三种情况下进行

  • 情况 1 - 使用 + 运算符
  • 情况 2 - 使用 concat() 方法
  • 情况 3 - 使用 append() 方法

+ 运算符和 append() 方法是字符串连接最有效的解决方案。此外,这两种情况是相同的,因为 JVM 通常会将情况 1 转换为情况 3 来组合字符串。

注意 - 此方法有 13 种不同的多态形式,我们将在以下文章中看到所有这些形式。

语法

以下是 Java StringBuffer append() 方法的语法

public StringBuffer append(boolean b)
or,
public StringBuffer append(char c)
or,
public StringBuffer append(char[] str)
or,
public StringBuffer append(char[] str, int offset, int len)
or,
public StringBuffer append(CharSequence s)
or,
public StringBuffer append(CharSequence s, int start, int end)
or,
public StringBuffer append(double d)
or,
public StringBuffer append(float f)
or,
public StringBuffer append(int i)
or,
public StringBuffer append(long lng)
or,
public StringBuffer append(Object obj)
or,
public StringBuffer append(String st)
or,
public StringBuffer append(StringBuffer sb)

参数

  • b - 这是布尔值。

  • c - 这是字符值。

  • str - 这是要追加的字符

  • offset - 这是要追加的第一个字符的索引。

  • len - 这是要追加的字符数。

  • s - 这是要追加的 CharSequence。

  • start - 这是要追加的子序列的起始索引。

  • end - 这是要追加的子序列的结束索引。

  • d - 这是双精度数值。

  • f - 这是浮点数的值。

  • i - 这是整数值。

  • lng - 这是长整数值。

  • obj - 这是对象的值。

  • st - 这是字符串的值。

  • sb - 这是要追加的 StringBuffer。

返回值

此方法返回对该对象的引用。

示例:将布尔值追加到 StringBuffer

如果参数是布尔值,则该方法会将布尔值直接追加到序列中。

以下示例显示了 Java StringBuffer append(Boolean b) 方法的用法。在这里,我们使用字符串名称“tuts”实例化一个 StringBuffer 对象“buff”。然后,我们使用“buff”对象和布尔参数“true”调用 append() 方法。返回值将是追加的字符串名称“tuts true”。类似地,我们使用字符串名称“abcd”和布尔参数“false”演示了另一种情况。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);

      // appends the boolean argument as string to the string buffer
      buff.append(true);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);

      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
      
      // appends the boolean argument as string to the string buffer    
      buff.append(false);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts true
buffer = abcd
After append = abcd false

示例:将字符追加到 StringBuffer

当传递字符参数时,该方法会将此参数追加到输入序列的内容中。此序列的长度增加 1。

以下示例显示了 Java StringBuffer append(char c) 方法的用法。在这里,我们创建了一个 StringBuffer 对象“buff”并使用字符串名称“tuts”对其进行初始化。然后,我们使用“buff”对象和参数“A”调用 append() 方法。返回值将是追加的字符串名称“tuts A”。类似地,我们使用字符串名称“abcd”和字符参数“!”演示了另一种情况。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);
    
      // appends the char argument as string to the string buffer.
      buff.append('A');
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);

      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
      
      // appends the char argument as string to the string buffer.    
      buff.append('!');
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts A
buffer = abcd
After append = abcd !

示例:将字符数组追加到 StringBuffer

当字符数组作为参数传递给该方法时,数组参数的字符将按顺序追加到此序列的内容中。此序列的长度增加数组参数的长度。

以下示例显示了 Java StringBuffer append(char[] str) 方法的用法。在这里,我们使用字符串名称“tuts”实例化一个 StringBuffer 对象“buff”。我们使用“buff”对象和包含五个元素{'p','o','i','n','t'}的字符数组参数调用 append() 方法。返回值将是追加的字符串名称“tuts point”。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);
    
      // char array
      char[] str = new char[]{'p','o','i','n','t'};
	
      /* appends the string representation of char array argument to
         this string buffer */
      buff.append(str);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts point

示例:将字符子数组追加到 StringBuffer

当该方法获取字符数组、索引和要追加的字符长度时,从任何索引开始的字符数组的字符将按顺序追加到此序列的内容中。此序列的长度增加追加的字符数量的值。

以下示例显示了 Java StringBuffer append(char[] str, int offset, int len) 方法的用法。我们首先尝试使用字符串名称“amrood”实例化一个 StringBuffer 对象“buff”。然后,我们使用“buff”对象和包含 13 个元素{'a','d','m','i','n','i','s','t','r','a','t','o','r'}的字符数组参数、偏移量参数'0'和要添加的长度'5'调用 append() 方法。返回值将是追加的字符串名称“amrood admin”。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("amrood ");
      System.out.println("buffer = " + buff);
    
      // char array
      char[] str = new char[]
      {'a','d','m','i','n','i','s','t','r','a','t','o','r'};
	
      /* appends the string representation of char array argument to
         this string buffer with offset at index 0 and length as 5 */
      buff.append(str, 0, 5);
	
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = amrood
After append = amrood admin

示例:将 CharSequence 追加到 StringBuffer

如果 CharSequence 作为参数传递给该方法,则 CharSequence 参数的字符将按顺序追加,使此序列的长度增加参数的长度。

以下示例显示了 Java StringBuffer append(CharSequence s) 方法的用法。在这里,我们使用字符串名称“compile”实例化一个 StringBuffer 对象“buff”。我们使用包含“online”的 CharSequence 参数和“buff”对象调用 append() 方法。返回值将是追加的字符串名称“compile online”。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("compile ");
      System.out.println("buffer = " + buff);

      CharSequence cSeq = "online";
      
      // appends the CharSequence
      buff.append(cSeq);

      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = compile
After append = compile online

示例:将子 CharSequence 追加到 StringBuffer

当 CharSequence 作为参数与起始索引和结束索引一起传递时,从任何索引开始的 CharSequence 参数的字符将按顺序追加到此序列的内容中,直到结束(不包括)索引。此序列的长度增加追加的字符数量的值。

以下示例显示了 Java StringBuffer append(CharSequence s, int start, int end) 方法的用法。我们首先尝试使用字符串名称“tutorials”实例化一个 StringBuffer 对象“buff”。然后,我们使用 CharSequence 参数“tutspoint”、起始参数'4'和结束参数'9'使用“buff”对象调用 append() 方法。返回值将是追加的字符串名称“tutorials point”。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tutorials ");
      System.out.println("buffer = " + buff);

      CharSequence cSeq = "tutspoint";
     
      // appends the CharSequence with start index 4 and end index 9
      buff.append(cSeq, 4, 9);
    
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }      
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tutorials
After append = tutorials point

示例:将双精度数追加到 StringBuffer

如果参数是双精度数值,则该方法会将此双精度数值直接追加到序列中。

以下示例显示了 Java StringBuffer append(double d) 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);

      // appends the double argument as string to the string buffer
      buff.append(30.100000001d);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);

      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
      
      // appends the double argument as string to the string buffer
      buff.append(20.12d);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts 30.100000001 
buffer = abcd 
After append = abcd 20.12 

示例:将浮点数追加到 StringBuffer

如果参数是浮点数,则该方法会将此浮点数直接追加到序列中。

以下示例显示了 Java StringBuffer append(float f) 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);

      // appends the float argument as string to the string buffer
      buff.append(6.5f);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);

      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
      
      // appends the float argument as string to the string buffer
      buff.append(10.25f);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts 6.5 
buffer = abcd 
After append = abcd 10.25 

示例:将整数追加到 StringBuffer

如果参数是整数,则该方法会将此整数值直接追加到序列中。

以下示例显示了 Java StringBuffer append(int i) 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);

      // appends the int argument as string to the string buffer
      buff.append(10);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);

      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
      
      // appends the int argument as string to the string buffer
      buff.append(253);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts 10
buffer = abcd
After append = abcd 253

示例:将长整数追加到 StringBuffer

如果参数是长整数,则该方法会将此长整数值直接追加到序列中。

以下示例显示了 Java StringBuffer append(long lng) 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tuts ");
      System.out.println("buffer = " + buff);

      // appends the long argument as string to the string buffer
      buff.append(254378L);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
    
      buff = new StringBuffer("abcd ");
      System.out.println("buffer = " + buff);
     
      // appends the long argument as string to the string buffer
      buff.append(5234l);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tuts
After append = tuts 254378
buffer = abcd
After append = abcd 5234

示例:将对象追加到 StringBuffer

如果参数是对象值,则该方法会将此对象值直接追加到序列中。

以下示例显示了 Java StringBuffer append(Object obj) 方法的用法。我们首先创建一个 StringBuffer 对象“buff”并使用字符串名称“tutorials”对其进行初始化。然后,使用 Object 类直接创建另一个对象并使用另一个字符串“point”对其进行初始化。通过使用 StringBuffer 对象调用 append() 方法并将另一个对象作为参数传递给它,这两个对象被追加在一起。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tutorials ");
      System.out.println("buffer = " + buff);
       
      Object obVal = "point";
      
      // appends the Object value
      buff.append(obVal);
    
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }      
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tutorials
After append = tutorials point

示例:将字符串追加到 StringBuffer

如果参数是字符串值,则该方法会将此字符串值直接追加到序列中。如果字符串为 null,则向序列中添加四个 null 值。

以下示例显示了 Java StringBuffer append(String st) 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tutorials ");
      System.out.println("buffer = " + buff);
    
      // appends the string argument to the string buffer
      buff.append("point");
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
    
      buff = new StringBuffer("1234 ");
      System.out.println("buffer = " + buff);
      
      // appends the string argument to the string buffer 
      buff.append("!#$%");
      
      // print the string buffer after appending
      System.out.println("After append = " + buff);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer = tutorials
After append = tutorials point
buffer = 1234
After append = 1234 !#$%

示例:将 StringBuffer 追加到 StringBuffer

如果参数是 StringBuffer 值,则该方法会将此 StringBuffer 值直接追加到序列中。如果 StringBuffer 为 null,则向序列中添加四个 null 值。

以下示例显示了 Java StringBuffer append(StringBuffer sb) 方法的用法。我们首先创建两个 StringBuffer 对象“buff1”和“buff2”。然后,分别使用字符串名称“tutorials”和“point”对其进行初始化。通过使用 StringBuffer 对象调用 append() 方法并将另一个 StringBuffer 对象作为参数传递给它,这两个对象被追加在一起。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff1 = new StringBuffer("tutorials ");
      System.out.println("buffer1 = " + buff1);
      StringBuffer buff2 = new StringBuffer("point ");
      System.out.println("buffer2 = " + buff2);
    
      // appends stringbuilder2 to stringbuilder1
      buff1.append(buff2);
      
      // print the string buffer after appending
      System.out.println("After append = " + buff1);
   }
}

输出

让我们编译并运行以上程序,这将产生以下结果 -

buffer1 = tutorials
buffer2 = point 
After append = tutorials point

示例:在将带有负索引的 CharSequence 追加到 StringBuffer 时遇到异常

如果该方法的 start 和 end 参数都为负;如果 start 大于 end;如果 end 大于 s.length(),则在所有三种情况下,该方法都会抛出 IndexOutOfBounds 异常。

以下示例演示了 java.lang.StringBuffer.append() 方法抛出异常的情况。在这里,我们实例化一个 StringBuffer 对象“buff”,并使用“tutorialspoint”初始化一个 CharSequence。然后,通过传递 CharSequence 以及 start 和 end 参数作为负值,使用 StringBuffer 对象调用该方法。在这种情况下,该方法将抛出异常。

public class StringBufferAppend {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("tutorials ");
      System.out.println("buffer = " + buff);

      CharSequence cSeq = "tutorialspoint";
     
      // throws exception as the index are negative
      buff.append(cSeq,-3, -5);
    
      System.out.println("After append = " + buff);
   }      
}

异常

程序编译并运行后,该方法会抛出 IndexOutOfBoundsException,因为参数 start 和 end 被赋予了负值。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Range [-3, -5) out of bounds for length 14
	at java.base/jdk.internal.util.Preconditions$3.apply(Preconditions.java:71)
	at java.base/jdk.internal.util.Preconditions$3.apply(Preconditions.java:68)
	at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
	at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112)
	at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349)
	at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:684)
	at java.base/java.lang.StringBuffer.append(StringBuffer.java:218)
    at StringBufferAppend.main(StringBufferAppend.java:13)
java_lang_stringbuffer.htm
广告