java字符串反转和String、StringBuilder、StringBuffer的区别

String 类——字符串常量
String的值是不可变的,这就导致每次String的操作都要生成新的String对象,效率低下且浪费内存。

StringBuffer和StringBuild——变化字符串
StringBuilder和StringBuffer 的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 效率高,线程不安全。
StringBuffer 效率低,线程安全。

    方法一:C式方法
    public static String reverse(String str) {
        char[] charArr = str.toCharArray();
        for (int start = 0, end = charArr.length - 1; start < end; start++, end--) {
            char tmp = charArr[start];
            charArr[start] = charArr[end];
            charArr[end] = tmp;
        }
        return new String(charArr);
    }
    方法二:利用StringBuffer的reverse方法
    public static String reverse(String str){
        StringBuffer sb = new StringBuffer(str);
        StringBuffer res = sb.reverse();
        return res.toString();
    }
    方法三:利用StringBuffer的append方法
    public static String reverse1(String str){
        StringBuffer sb = new StringBuffer();
        for (int i = str.length() -1; i >= 0; i--) {
            sb.append(str.charAt(i));
        }
        return sb.toString();
    }