Java中的字符串:charAt函数使用

时间:2016-03-08 08:10:17

标签: java string

通过反向循环(来自str.length-1-> 0)连接原始字符串可以完成反转字符串

但为什么这不能正常工作: 通过从最后位置到第0位添加字符:

int i = 0;
while(i<originalStr.length())
{
    strRev.charAt(i)=originalStr.charAt(str.length()-1-i);
    i++;
}

3 个答案:

答案 0 :(得分:7)

字符串在Java中是不可变的。你无法编辑它们。

如果您想要反转字符串以进行培训,可以创建char[],对其进行操作,然后从String实例化char[]

如果你想为了专业目的而反转String,你可以这样做:

String reverse = new StringBuilder(originalStr).reverse().toString();

答案 1 :(得分:2)

strRev.charAt(i) // use to Retrieve what value at Index. Not to Set the Character to the Index.

我们都知道String是Java中的immutable类。每次如果您尝试修改任何String对象,它都会创建一个新对象。

eg :- String abc = "Vikrant"; //Create a String Object with "Vikrant"

      abc += "Kashyap";    //Create again a new String Object with "VikrantKashyap" 
                          // and refer to abc again to the new Object.
      //"Vikrant" Will Removed by gc after executing  this statement.

最好使用StringBufferStringBuilder执行反向操作。这两个类之间唯一的区别是

  

A) StringBuffer 是线程安全(已同步)。有点慢,因为每次都需要检查Thread Lock。

     

B) StringBuider 不是线程安全的。因此,它为您提供了更快的结果,因为它不是Synchronized

有几个第三方罐子为您提供Reverse等功能以及更多字符串基础操作Methods

 import org.apache.commons.lang.StringUtils; //Import Statement

 String reversed = StringUtils.reverse(words);

答案 2 :(得分:0)

在您的测试方法中,最佳做法是使用AAA模式:
安排所有必要的先决条件和输入 根据被测对象或方法采取行动 断言预期结果已经发生。

@Test
 public void test() {
    String input = "abc";

    String result = Util.reverse(input);

    assertEquals("cba", result);
 }