4

文字列を逆にするプログラムが表示されます

public class ReverseName{
    public static void main(String[]args)
    {
        String name=args[0];
        String reverse=new StringBuffer(name).reverse().toString();
        System.out.println(reverse);
    }
}

それで、 new StringBuffer(name).reverse().toString();すべては何ですか?

4

5 に答える 5

4
String reverse=new StringBuffer(name).reverse().toString();

これを分解しましょう。

new StringBuffer(name)

まず、の内容を使用して新しいStringBufferを作成します(スレッドセーフが必要ないため、StringBuilderを使用していました)name。これにより、文字列を追加するためのよりパフォーマンスの高い方法が可能になりますが、ここでは次の部分で使用されます。

.reverse()

これにより、StringBufferのreverseメソッドが呼び出され、逆のStringBufferが返されます。

.toString();

最後に、これは文字列に戻されます。

于 2012-04-04T12:01:37.527 に答える
2

あなたは理解するためにそれを3行に分割することができます

StringBuffer reverseBuffer = new StringBuffer(name); // Creating new StringBuffer object
reverseBuffer  = reverseBuffer.reverse(); //Reversing the content using StringBuffer
String reverse = reverseBuffer.toString(); // Converting StringBuffer to String and saving in reverse 
于 2012-04-04T12:01:50.527 に答える
1

文字列を反転するStringBufferオブジェクトだけ

「name」Stringオブジェクトを使用してStringBufferオブジェクトをインスタンス化し、それを逆にします。

于 2012-04-04T11:58:55.507 に答える
1

JAVAAPIから

public StringBuffer reverse()

この文字シーケンスをシーケンスの逆に置き換えます。シーケンスにサロゲートペアが含まれている場合、これらは逆の操作では1文字として扱われます。したがって、高低サロゲートの順序が逆になることはありません。逆メソッドを実行する直前のこの文字シーケンスの文字長(char値の長さではない)をnとします。次に、新しい文字シーケンスのインデックスkの文字は、古い文字シーケンスのインデックスnk-1の文字と等しくなります。

逆の操作では、操作前にペアになっていない低サロゲートと高サロゲートであったサロゲートペアが生成される可能性があることに注意してください。たとえば、「\ uDC00 \ uD800」を逆にすると、有効な代理ペアである「\ uD800\uDC00」が生成されます。

戻り値:このオブジェクトへの参照。以来:JDK1.0.2

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html#reverse%28%29

于 2012-04-04T11:59:38.760 に答える
0

実際、Stringは不変のクラスです。つまり、Stringのオブジェクトが作成されると、その内容を変更することはできません。したがって、StringBufferを使用して文字列を作成します。上記の例では、StringBufferのオブジェクトはコンテンツ名で作成され、名前の文字列はStringBufferの同じオブジェクトで逆になります(可変であるため)。再びStringオブジェクトに変換され、そのオブジェクトがオブジェクト参照を逆にするように割り当てられました。

于 2012-04-04T12:18:07.003 に答える