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
廣告
© . All rights reserved.