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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小洋人最happy 中级黑马   /  2012-12-25 14:12  /  1513 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public classStringBuilderTest {
    public static void main(String[] args) {
       StringBuilders1 = newStringBuilder("hello");
       StringBuilders2 = newStringBuilder("java");
       show(s1,s2);
       System.out.println(s1+"......."+s2);
    }
    private static void show(StringBuilder s1,StringBuilder s2) {
       s1.append(s2);
       s1= s2;//这个不是付给s1了吗
    }
}
为什么打印结果是hellojava。。。。。Java  

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1

查看全部评分

6 个回复

倒序浏览
s1.append(s2);是将s2添加到s1的末尾处,所以s1变成了hellojava
回复 使用道具 举报
必须先实例化一个:
stringBuilder sBuilder = new stringBuilder();
可以拼接执行SQL语句,易于阅读
sBuilder.Append("select * from tb1");
sBuilder.Append("where id=1");
回复 使用道具 举报
你好,我把你变量名改了一下,你能看出原因吗?
public class StringbuilderTest {
    public static void main(String[] args) {
       StringBuilder s1 = new StringBuilder("hello");
       StringBuilder s2 = new StringBuilder("java");
       show(s1,s2);
       System.out.println(s1+"......."+s2);
    }
    private static void show(StringBuilder s3,StringBuilder s4) {
       s3.append(s4);
           System.out.println("1->"+s3);
            System.out.println("1->"+s4);
       s3= s4;//这个不是付给s1了吗
           System.out.println("2->"+s3);
           System.out.println("2->"+s4);   
    }
}

运行的结果是:
1->hellojava
1->java
2->java
2->java
hellojava.......java
希望对你有帮助!

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1

查看全部评分

回复 使用道具 举报
郭金龙 发表于 2012-12-25 14:51
你好,我把你变量名改了一下,你能看出原因吗?
public class StringbuilderTest {
    public static void  ...

你也可以把main()方法中的show(s1,s2);注释掉。然后把show()方法中内容直接写到main()方法中。与改变量这个段代码对比分析一下。仔细分析一下赋值。内存地址
  1. public static void main(String[] args) {

  2.                 StringBuilder s1 = new StringBuilder("hello");
  3.             StringBuilder s2 = new StringBuilder("java");
  4.             //show(s1,s2);
  5.             s1.append(s2);
  6.                System.out.println("s1---"+s1);
  7.                s1= s2;
  8.                System.out.println("s1---"+s1);
  9.                System.out.println("s2---"+s2);
  10.             System.out.println("s1====="+s1);
  11.             System.out.println(s1+"......."+s2);
  12.         }
复制代码
运行结果:

QQ截图20121225151145.png (1.47 KB, 下载次数: 31)

QQ截图20121225151145.png

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黄锦成 于 2012-12-25 15:19 编辑

这个我解决了,发个图给你看看

QQ截图20121225151817.png (14.23 KB, 下载次数: 36)

对象在内存中的情况

对象在内存中的情况

点评

你解释的挺好的!相信你的解释!  发表于 2012-12-25 15:48

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 赞一个!

查看全部评分

回复 使用道具 举报
黄锦成 发表于 2012-12-25 15:16
这个我解决了,发个图给你看看

这个是我的个人见解。以前我在学习内存分布这一块,学了挺久,后来看了张老师的视频,才入门了。张老师有句话,不要只看表面,要看在内存中的分布情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马