append() は、現在のシーケンスに値を追加する StringBuilder クラスおよび StringBuffer クラスの Java メソッドです。append()メソッドが何であるか知らなかったとしても、おそらくすでに暗黙的にそれを使用しているでしょう。これは、Java で + 演算子を使用して文字列を連結したときに発生しました。重要なのは、Java の String 連結は StringBuilder または StringBuffer クラスとそのappend()メソッドを使用して実装されるということです。
String、StringBuffer、StringBuilder について簡単に説明します。
おそらくご存知のとおり、String クラスは Final (子クラスを持たない) であり、不変 (このクラスのインスタンスは作成後に変更できません) です。実際、String クラスの不変性により、各操作の結果として新しい文字列インスタンスが作成され、古い文字列インスタンスは破棄され、大量のガベージが生成されます。String オブジェクトの変更による一時的なガベージの生成に対処するには、StringBuffer クラスまたは StringBuilder クラスを使用できます。後者の 2 つの主な違いは、StringBuffer は同期されるのに対し、StringBuilder は同期されないことです。したがって、マルチスレッド環境で頻繁に変更される文字列には StringBuffer を使用し、シングルスレッド環境の場合は StringBuilder を使用します。StringBuilder および StringBuffer の Append()
append() は、StringBuilder クラスと StringBuffer クラスの最上位メソッドの 1 つです。現在のシーケンスに新しい値を追加します。StringBuffer クラスと StringBuilder クラスの両方に、 13 個のさまざまなオーバーロードされたappend()メソッドがあります。StringBuilder の append メソッドを見てみましょう。とにかく、StringBuffer の場合でもまったく同じように機能します。- 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) は、既存の 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 が大好きです
ここで何が起こったのでしょうか?まず、値「I love Java」を持つ s という名前の StringBuilder を作成しました。次に、 append(int)を使用して整数 14 を追加します。厳密に言えば、整数ではなく文字列「14」を追加し、「I love Java 14」に更新された StringBuilder 値を取得しました。したがって、このメソッドは引数を StringBuilder オブジェクトに変換し、それを既存の StringBuilder オブジェクトにバインドし、更新されたオブジェクトを返します。
Object、int、boolean、および String 引数の StringBuilder append() の例
数値、文字列、文字、または配列要素を含む他のすべてのオーバーロードされたメソッドについても、同じことが言えます。LegoBrick クラスと Color 列挙型を作成して、パブリック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 +
'}';
}
}
次に、String、int、LegoBrick、および boolean を使用した基本的な StringBuilder の追加を示す AppendDemo クラスを作成しましょう。奇妙に聞こえますが、うまくいきます。
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()メソッドを使用して String、int 数値、Object の String 表現、および boolean を順番に追加しました。
StringBuilder append(char[] cstr、int セット、int 長)
3 つのパラメータを持つ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 を持つ 2 つのメソッドに気づいたかもしれません。- 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);
}
}
出力は次のとおりです。
これは String これは StringBuilder 私の StringBuilder これは StringBuilder 私の StringBuilder これは StringBuilder これは String 私の StringBuilder これは StringBuilder これは String です
2 つの CharSequence を作成し、String と StringBuilder をバインドして出力しました。CharSequence にはこのメソッドがないため、 append()メソッドを myStringBuilder に直接適用することはできません(理由がわからない場合は、参照型の拡張と縮小だけでなく継承についても理解する必要があります)。したがって、両方の CharSequence で StringBuilder を作成し、append メソッドを使用して順次連結します。最後に、StringBuilder にサブシーケンス「is」を追加しました (「i」は myStringBuilder の 5 番目の要素、s は 6 番目の要素です。このメソッドでは、end として指定された要素がサブシーケンスから除外されることに注意してください。
StringBuffer append() はどうでしょうか?
StringBuffer.appendにも 13 のメソッドのバリアントがあり、それらは StringBuilder とまったく同じように動作します。- public StringBuffer 追加 (ブール値 b)
- public StringBuffer append (char c)
- public StringBuffer append (char[] str)
- public StringBuffer append (char[] str, int offset, int len)
- public StringBuffer 追加 (double d)
- public StringBuffer 追加 (float f)
- public StringBuffer append (int i)
- public StringBuffer 追加 (long lng)
- public StringBuffer append (CharSequence s)
- public StringBuffer append (CharSequence s, int start, int end)
- public StringBuffer append (オブジェクト obj)
- public StringBuffer append (String str)
- public 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