我写的一个类如下:
public class StringsDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        StringBuffer dest = new StringBuffer(len);        for (int i = (len - 1); i >= 0; i--) {
            dest.append(palindrome.charAt(i));
        }
        System.out.println(dest.toString());
        System.out.println(dest);
        System.out.println(palindrome.toString());
        System.out.println(palindrome);
    }
}
结果为:
doT saw I was toD
doT saw I was toD
Dot saw I was Tod
Dot saw I was Tod
请问为什么会发生这样的变化??

解决方案 »

  1.   

    吧palindrome字符串中的字符从后到前逐一追加到dest中
    就是说反转了字符串
      

  2.   

    1.解到 doT saw I was toD 这是因为你这里(for (int i = (len - 1); i >= 0; i--) { 
                dest.append(palindrome.charAt(i)); 
            } 
    )使字符串返顺了2  这dest 指向是就是返顺后字符串
     3 4 都是指向palindrome 就是字符串Dot saw I was Tod
      

  3.   

    System.out.println(dest.toString()); 
    System.out.println(dest); 
    System.out.println(palindrome.toString()); 
    System.out.println(palindrome); 
    两句带toString()的都是废话,不写也一样
      

  4.   

    for (int i = (len - 1); i >= 0; i--) { 
                dest.append(palindrome.charAt(i)); 
            } 是从后往前添加字符
      

  5.   

    append(char c)是StringBuffer类的一个方法,是将当前字符添加到字符串的末尾,它就像一个容器,当你把字符添加完后,输出出来就是一个有顺序的字符串;