簡體   English   中英

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

[英]String in Java : charAt Function use

可以通過反向循環將原始字符串連接起來來反轉字符串(從str.length-1-> 0開始)

但是為什么這不能正常工作:通過從最后一個位置到第0個位置逐個字符地添加字符:

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

字符串在Java中是不可變的。 您無法編輯它們。

如果要出於訓練目的而反轉String,則可以創建char[] ,對其進行操作,然后從char[]實例化String

如果您出於專業目的想要反轉字符串,則可以這樣做:

String reverse = new StringBuilder(originalStr).reverse().toString();
strRev.charAt(i) // use to Retrieve what value at Index. Not to Set the Character to the Index.

我們所知道的, String是Java中的一個immutable類。 每次嘗試修改任何String對象時,都會創建一個新的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是線程安全的(同步的)。 有點慢,因為每次都需要檢查線程鎖定。

B) StringBuider不是線程安全的。 因此,由於不Synchronized ,它可以為您提供更快的結果。

有多個第三方Jar可以為您提供諸如Reverse類的功能以及更多基於字符串的操作Methods

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

 String reversed = StringUtils.reverse(words);

在您的測試方法中,最佳實踐是使用三重A模式:
安排所有必要的前提條件和輸入。
對被測對象或方法采取行動。
斷言已經發生了預期的結果。

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

    String result = Util.reverse(input);

    assertEquals("cba", result);
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM