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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周洋 黑马帝   /  2012-3-22 21:29  /  1597 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class StringBuffertest{
public static void main(String[] args){
String str1="从来富贵不是梦";
str1=str1+"未有圣贤不读书";      //注意此str1的存储地址已发生变化
System.out.println(str1);
StringBuffer sb1=new StringBuffer("精思生智慧,");
StringBuffer sb2=sb1.append("慧可解怨!");    //注意sb1和sb2指向同一个地址
sb2.insert(6,"识可转智,");
System.out.println("sb1="+sb1);
System.out.println("sb2="+sb2);
sb1.append(Math.E);
System.out.println(sb1);
System.out.println(sb1.charAt(2));
System.out.println("sb1的长度="+sb1.length());
System.out.println("sb1的容量="+sb1.capacity());


}
}
里面的两行注释我不明白,这段代码里面的:
System.out.println("sb1="+sb1);
System.out.println("sb2="+sb2);
这两条代码为什么输出的值是一样的?课本说它们指向同一个地址是怎么回事?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

3 个回复

倒序浏览
StringBuffer sb1=new StringBuffer("精思生智慧,");此条语句你创建了一个sb1的缓冲容器
StringBuffer sb2=sb1.append("慧可解怨!");    这条语句表示在上边创建的那个容器中装了字符串“慧可解怨!”,但它添加之后返回的仍是原来那个容器,只是你又给它 了一个引用
自始自终对象都是那个缓冲容器
你只需理解对StringBuffer对象操作后返回的是什么理解一下应该就能明白的

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
StringBuffer sb1=new StringBuffer("精思生智慧,"); //sb1为“精思生智慧,”
StringBuffer sb2=sb1.append("慧可解怨!");    //sb1.append("慧可解怨!"); 会返回修改后的StringBuffer对象,返回的对象内容为“精思生智慧,慧可解怨!”,同时sb2也指向sb1指向的StringBuffer对象,
再操作sb2时就会修改这个对象,sb2.insert(6,"识可转智,");会插入"识可转智,",
所以System.out.println("sb1="+sb1);
System.out.println("sb2="+sb2);打印的值相同

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马