什么是java中的'new StringBuffer(String)'?

时间:2012-04-04 11:57:29

标签: java

我看到一个程序来反转一个字符串

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();到底是什么?

5 个答案:

答案 0 :(得分:4)

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

让我们打破这一点。

new StringBuffer(name)

首先我们创建一个新的StringBuffer(我已经使用了StringBuilder,因为我们不需要线程安全),内容为name。这只是允许更多的方式来追加字符串,但这里它用于下一部分。

.reverse()

这将调用StringBuffer上的reverse方法,该方法返回一个反向的StringBuffer。

.toString();

最后,这将变回一个字符串。

答案 1 :(得分: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 

答案 2 :(得分:1)

只是一个StringBuffer对象,用于反转字符串

使用“name”String对象实例化StringBuffer对象,然后将其反转。

答案 3 :(得分:1)

来自JAVA API

public StringBuffer reverse()

使该字符序列被序列的反转替换。如果序列中包含任何代理对,则将这些代理对视为反向操作的单个字符。因此,高低代理人的顺序永远不会逆转。设n是执行反向方法之前的字符序列的字符长度(不是char值的长度)。然后新字符序列中索引k处的字符等于旧字符序列中索引n-k-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

答案 4 :(得分:0)

实际上String是一个不可变类,这意味着一旦创建了String对象,就无法修改其内容。因此我们使用StringBuffer来构造字符串。在上面的示例中,StringBuffer的对象是使用内容名称创建的,String in name在StringBuffer的相同对象中是相反的(因为它是可变的)。再次转换为String对象并将该对象分配给反向对象引用。