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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不存在的奇迹 中级黑马   /  2015-4-20 21:42  /  675 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


6 个回复

倒序浏览
public class Demo {
        public static void main(String[] args) {
                StringBuffer sb1 = new StringBuffer("hello");
                StringBuffer sb2 = new StringBuffer("world");
                change(sb1, sb2);
//                System.out.println("外面" + sb1 + "---" + sb2);
        }

        public static void change(StringBuffer sb1, StringBuffer sb2) {
                sb1 = sb2;
                System.out.println("里面" + sb1 + "---" + sb2);
                sb2.append(sb1);
                System.out.println("里面" + sb1 + "---" + sb2);
        }

}
回复 使用道具 举报
为什么 sb1 变成了 worldworld
回复 使用道具 举报
注意StringBuffer是引用类型哟
回复 使用道具 举报
永远支持楼主,继续发好贴
回复 使用道具 举报
change里面第一句是 sb1 = sb2;这里的意思是把sb2的地址值 赋值给 sb1 存储
也就是说这时候 sb1 与 sb2一样都指向了 同一个地方,那么后面
sb2.append(sb1);
这一个语句等于是对两个变量所指的同一个地址的内存进行操作
sb1的内容与sb2内容一致
回复 使用道具 举报
谢谢分享哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马