黑马程序员技术交流社区

标题: 字符串 [打印本页]

作者: 赵嘉男    时间: 2012-4-25 12:31
标题: 字符串
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

为什么我输出的不是呢,错误在哪里
作者: 光sail    时间: 2012-4-25 12:39
本帖最后由 光sail 于 2012-4-25 12:52 编辑

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


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

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


作者: 罗旭维    时间: 2012-4-25 12:52
s1.reverse();之后s1是“54321”,
s2=s1之后s2是"54321",
s1.append(s2);之后s1是“5432154321”
作者: 金超    时间: 2012-4-25 13:07
看注释
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
  }
}

作者: 张小庆    时间: 2012-4-25 13:09
你翻转之后s1也就变成54321了,然后你又让s2指向54321,再然后你又往s1中添加了s2,结果就可想而知了啊
作者: 崔仁军    时间: 2012-4-25 14:32
1.你在执行 s2=s1.reverse();  这行代码时是把 s1 中的字符先自己反转了 然后在赋给 s2  ,现在s2中的字符也是反转了的    然后你在加到 s1  ,s1中现在的字符也是反转的你在加入反转的字符当然输出的都是反转的
作者: 陈忠    时间: 2012-4-25 14:37
金超 发表于 2012-4-25 13:07
看注释
public class AppendRevertString {

分析的很到位~:D
作者: 金超    时间: 2012-4-25 15:11
陈忠 发表于 2012-4-25 14:37
分析的很到位~

你能给技术分就好了,呵呵:)
作者: 丁佼    时间: 2012-4-25 17:27
本帖最后由 丁佼 于 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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2