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

本帖最后由 烟海 于 2014-8-9 22:57 编辑


昨天一个题目的升级版,昨晚一直没想明白,拿出来探讨下,算是互相进步吧 。。
我今晚问了下老师,最终才算搞明白,个人觉得这题还是很复杂的,就来出来,大家探讨学习下吧 。。。
代码我直接贴出来。。。然后我整理出来的解释,我也发出来,但是解释,我会隐藏,希望大家先不要看答案,自己判断出来,看看怎么判断的答案,和正确的答案有无出入?互相探讨学习,提高吧 。

代码一:
  1. package cn.itcast.collection;

  2. public class Demo3 {
  3.         public static void main(String[] args) {
  4.                 StringBuffer s1 = new StringBuffer("hello");
  5.                 StringBuffer s2 = new StringBuffer("java");
  6.                 show(s1,s2);
  7.                 System.out.println("=================");

  8.                 System.out.println(s1);
  9.                 System.out.println(s2);        
  10.         }
  11.         public static void show(StringBuffer s1 ,StringBuffer s2)
  12.         {
  13.         
  14.                 s1.append(s2);
  15.                 System.out.println("S1---"+s1);
  16.                
  17.                 s2 = s1;
  18.                 System.out.println("S2---"+s2);

  19.                 s2.append(s1);
  20.                 System.out.println("S2---"+s2);
  21.                 System.out.println("S1---"+s1);
  22.                
  23.         }

  24. }
复制代码

代码二:
  1. package cn.itcast.collection;

  2. public class Demo3 {
  3.         public static void main(String[] args) {
  4.                 StringBuffer s1 = new StringBuffer("hello");
  5.                 StringBuffer s2 = new StringBuffer("java");
  6.                 show(s1,s2);
  7.                 System.out.println("=================");

  8.                 System.out.println(s1);
  9.                 System.out.println(s2);        
  10.         }
  11.         public static void show(StringBuffer s1 ,StringBuffer s2)
  12.         {
  13.         
  14.                 s1.append(s2);
  15.                 System.out.println("S1---"+s1);
  16.                
  17.                 s1 = s2;
  18.                 System.out.println("S2---"+s2);

  19.                 s2.append(s1);
  20.                 System.out.println("S2---"+s2);
  21.                 System.out.println("S1---"+s1);
  22.                
  23.         }

  24. }
复制代码



下面是隐藏的答案部门,求没做出来前别看答案:


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1黑马币 +5 收起 理由
fantacyleo + 5 赞一个!

查看全部评分

95 个回复

正序浏览
回复 使用道具 举报
形参传递有点迷糊
回复 使用道具 举报
来学习拉
回复 使用道具 举报
学习学习!!!!
回复 使用道具 举报
呃?没看出什么特别的地方
回复 使用道具 举报
看一下答案
回复 使用道具 举报
kakasa 发表于 2014-8-11 22:37
好吧,算了还是不懂。。。

x=y 就是直接赋值了把?结果是22 12 ,为什么?

因为是void类型。。。没有return值。。所以show方法里面的。。在值上面。。和外面没有关系。。。
回复 使用道具 举报
如果这里不用字符串缓冲区,用字符串结果就不一样了吧。
回复 使用道具 举报
太好了  学习下
回复 使用道具 举报
看答案,呵呵
回复 使用道具 举报
kakasa 发表于 2014-8-11 19:59
好像有点明白了,其实主要原因还是因为单独封装了show方法的原因吧,因为show方法会在栈内存另外生成Stri ...

跟StringBuffer 和append都有关系的。。。。
仔细看看吧 。。。
回复 使用道具 举报
学习了,加深下这块的理解。
回复 使用道具 举报
:o 有点儿意思
回复 使用道具 举报
怀念黑海岸 发表于 2014-8-11 19:12
恩,和哦我想的结果是一样的。。呵呵,这儿我特别深究过的的,所以不是特别难。 ...

哦。。那挺厉害的了。。
回复 使用道具 举报
烟海 发表于 2014-8-11 19:04
是的。。看看打印结果和你预想的是不是一样??

恩,和哦我想的结果是一样的。。呵呵,这儿我特别深究过的的,所以不是特别难。
回复 使用道具 举报
怀念黑海岸 发表于 2014-8-11 18:59
额,我想知道问题是什么????是求打印结果吗??

是的。。看看打印结果和你预想的是不是一样??
回复 使用道具 举报
本帖最后由 怀念黑海岸 于 2014-8-11 19:03 编辑

额,我想知道问题是什么????是求打印结果吗??
回复 使用道具 举报
:victory::victory:
回复 使用道具 举报
J.twt 中级黑马 2014-8-11 18:15:17
74#
怎么感觉简单?
回复 使用道具 举报
看看答案
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 加入黑马