黑马程序员技术交流社区
标题:
StringBuffer问题
[打印本页]
作者:
周洋
时间:
2012-3-22 21:29
标题:
StringBuffer问题
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);
这两条代码为什么输出的值是一样的?课本说它们指向同一个地址是怎么回事?
作者:
刘元明
时间:
2012-3-22 22:01
StringBuffer sb1=new StringBuffer("精思生智慧,");此条语句你创建了一个sb1的缓冲容器
StringBuffer sb2=sb1.append("慧可解怨!"); 这条语句表示在上边创建的那个容器中装了字符串“慧可解怨!”,但它添加之后返回的仍是原来那个容器,只是你又给它 了一个引用
自始自终对象都是那个缓冲容器
你只需理解对StringBuffer对象操作后返回的是什么理解一下应该就能明白的
作者:
张锦萍
时间:
2012-3-22 22:25
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);打印的值相同
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2