在Java中,'new StringBuffer(aString)'是什么意思?

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(); 是什么意思呢?

它的作用是将字符串反转,具体实现方式是创建一个StringBuffer对象,使用reverse()方法使其反转,然后再将其转换为字符串并返回结果。

6
它可能能做什么呢? :) - Bozho
3
阅读StringBuffer文档,答案不是很明显吗?即使没有文档,你认为它会做什么? - Guillaume Polet
当您阅读 javadoc 和代码时(您可以从 ide 上单击它),您看到它做了什么? - Peter Lawrey
5个回答

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

让我们分解这个问题。

new StringBuffer(name)

首先,我们创建一个新的 StringBuffer(由于不需要线程安全,我会使用 StringBuilder),并将其内容设置为 name。这只是为了更有效地连接字符串,但在这里它用于下一部分。
.reverse()

这将在StringBuffer上调用reverse方法,返回一个反转的StringBuffer。
.toString();

最后,它会被转换回字符串。

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 

1

只是一个反转字符串的StringBuffer对象

您可以使用“name”字符串对象实例化StringBuffer对象,然后将其反转。


1

来自JAVA API

public StringBuffer reverse()

使此字符序列被替换为其反向序列。如果序列中包含任何代理对,则将其视为单个字符进行反转操作。因此,高低代理的顺序永远不会被颠倒。设n为执行reverse方法之前此字符序列(而非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


0
实际上,String是一个不可变的类,这意味着一旦创建了String对象,其内容就无法修改。因此,我们使用StringBuffer来构建字符串。在上面的例子中,使用StringBuffer对象创建了内容为“name”的对象,该对象的String被反转到同一StringBuffer对象中(因为它是可变的)。然后再将其转换为String对象,并将该对象分配给reverse对象引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接