黑马程序员技术交流社区

标题: !!求助 [打印本页]

作者: 不存在的奇迹    时间: 2015-4-20 21:42
标题: !!求助


作者: 不存在的奇迹    时间: 2015-4-20 21:44
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);
        }

}
作者: 不存在的奇迹    时间: 2015-4-20 21:46
为什么 sb1 变成了 worldworld
作者: 百思不得解    时间: 2015-4-20 22:07
注意StringBuffer是引用类型哟
作者: itheima_llt    时间: 2015-4-20 22:28
永远支持楼主,继续发好贴
作者: 鸡脑壳    时间: 2015-4-20 22:45
change里面第一句是 sb1 = sb2;这里的意思是把sb2的地址值 赋值给 sb1 存储
也就是说这时候 sb1 与 sb2一样都指向了 同一个地方,那么后面
sb2.append(sb1);
这一个语句等于是对两个变量所指的同一个地址的内存进行操作
sb1的内容与sb2内容一致
作者: itheima_llt    时间: 2015-4-20 22:46
谢谢分享哈




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