A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-4-25 12:31  /  2374 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class AppendRevertString {

public static void main(String[] args) {
  StringBuffer s2=null;
  StringBuffer s1=new StringBuffer("12345");
  System.out.println(s1);
  System.out.println("倒序后得到的结果是:");
  s2=s1.reverse();
  s1.append(s2);
  System.out.println(s1);
  }
}


输出1234554321

为什么我输出的不是呢,错误在哪里

9 个回复

倒序浏览
本帖最后由 光sail 于 2012-4-25 12:52 编辑

我这输出的是
12345
倒序后得到的结果是:
5432154321


代码执行到 s2=s1.reverse();
这里的时候,s1先进行了倒序处理,然后把处理后的值复制给s2,
回复 使用道具 举报
本帖最后由 周海诚 于 2012-4-25 12:56 编辑

我这编译后的结果是12345,
倒序后是5432154321.

回复 使用道具 举报
s1.reverse();之后s1是“54321”,
s2=s1之后s2是"54321",
s1.append(s2);之后s1是“5432154321”
回复 使用道具 举报
看注释
public class AppendRevertString {

public static void main(String[] args) {
  StringBuffer s2=null;
  StringBuffer s1=new StringBuffer("12345");
  System.out.println(s1);
  System.out.println("倒序后得到的结果是:");
  s2=s1.reverse();    //s1倒序之后是“54321”,s2指向了s1的地址,也就是说s2,s1代表的都是“54321”
  s1.append(s2);     //s1是“54321”,s2也是“54321”,连接在一起就是5432154321
  System.out.println(s1);  //输出5432154321
  }
}
回复 使用道具 举报
你翻转之后s1也就变成54321了,然后你又让s2指向54321,再然后你又往s1中添加了s2,结果就可想而知了啊
回复 使用道具 举报
1.你在执行 s2=s1.reverse();  这行代码时是把 s1 中的字符先自己反转了 然后在赋给 s2  ,现在s2中的字符也是反转了的    然后你在加到 s1  ,s1中现在的字符也是反转的你在加入反转的字符当然输出的都是反转的
回复 使用道具 举报
陈忠 中级黑马 2012-4-25 14:37:20
8#
金超 发表于 2012-4-25 13:07
看注释
public class AppendRevertString {

分析的很到位~:D
回复 使用道具 举报
金超 中级黑马 2012-4-25 15:11:42
9#
陈忠 发表于 2012-4-25 14:37
分析的很到位~

你能给技术分就好了,呵呵:)
回复 使用道具 举报
丁佼 黑马帝 2012-4-25 17:27:50
10#
本帖最后由 丁佼 于 2012-4-25 17:30 编辑
  1. public class AppendRevertString {

  2. public static void main(String[] args) {
  3.   StringBuffer s2=null;
  4.   StringBuffer s1=new StringBuffer("12345");
  5.   System.out.println(s1);

  6. /****  s2=s1.reverse();  这里是将s1逆向排序,然后再赋值,就是说s1被改变了。可以使用一个中间变量接受s1的值,逆转中间变量,之后再赋值 ****/

  7.   StringBuffer temp=new StringBuffer(s1.toString());;
  8.   //System.out.println("翻转前验证代码,取消取消注释即可");
  9.   //System.out.println("temp: "+temp);
  10.   //System.out.println("s1: "+s1);

  11.   s2=temp.reverse();
  12.   //System.out.println("翻转后验证代码,取消取消注释即可");
  13.   //System.out.println("temp: "+temp);
  14.   //System.out.println("s1: "+s1);
  15.   //System.out.println("s2: "+s2);
  16.   
  17.   System.out.println("倒序后得到的结果是:");
  18.   s1.append(s2);
  19.   System.out.println(s1);
  20.   }
  21. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马