我看到一个程序来反转一个字符串
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();
到底是什么?
答案 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对象并将该对象分配给反向对象引用。