1.利用StringBuffer里的reverse()方法
- 雖然String和StringBUffer都能操作字符串,但是不屬於同一個類,不能直接兼容
- StringBuffer()將String類型的str轉換為StringBuffer,方便調用reverse()方法。
- toString()將StringBuffer類型轉換為String類型
2.最快的方式StringBuilder
- StringBuffer和StringBuilder都繼承自屬於同一個類,用法相同。
- 它和StringBuffer本質上沒什么區別,就是去掉了保證線程安全的那部分,減少了開銷。
總結:
1、在字符串不經常發生變化的業務場景優先使用String(代碼更清晰簡潔)。如常量的聲明,少量的字符串操作(拼接,刪除等)。
2、在單線程情況下,如有大量的字符串操作情況,應該使用StringBuilder來操作字符串。不能使用String"+"來拼接而是使用,避免產生大量無用的中間對象,耗費空間且執行效率低下(新建對象、回收對象花費大量時間)。如JSON的封裝等。
3、在多線程情況下,如有大量的字符串操作情況,應該使用StringBuffer。如HTTP參數解析和封裝等。
3.遞歸
public static String reverse(String s) {
int length = s.length();
if (length <= 1)
return s;
String left = s.substring(0, length / 2);
String right = s.substring(length / 2, length);
String afterReverse = reverse(right) + reverse(left);
return afterReverse;
}