String 和StringBuffer的区别,谁能指教一下
我的程序:
package brick0906;
public class NumberText {
public static void main(String args[]){
NumberText n= new NumberText();
StringBuffer sb = new StringBuffer( "123 ");
n.append(sb);
System.out.println(sb.toString());
}
private void append(StringBuffer sb) {
sb.append( "abc ");
System.out.println(sb.toString());
sb = new StringBuffer( "xyz ");
System.out.println(sb.toString());
}
}
最后显示:
123abc
xyz
123abc
-------------------------------------------
在append()方法中,sb不是已经变成xyz了吗,怎么最后还是显示123abc啊,教教我哈
------解决方案--------------------因为java传参数的时候是传值的
那么怎么传值呢?
StringBuffer sb=new StringBuffer( "123 ");
我们这样建立了一个对象
内存中村着数据“123“
而sb 这个变量指向这个区域 sb---〉”123“
那么另外一个变量 sbb--〉”123“
也是指向同一个区域
所以当sbb.append( "abc ")的时候
这块内存区域的值就变成“123abc”
sb---〉“123abc”
sbb---〉“123abc”
但是当我们执行下面一步
sbb=new StringBuffer( "123 ");
的时候
sbb 指向另外一个内存空间 那里放着“123”
sbb--〉“123”
而sb--〉“123abc“
仍然指向原来这块区域
所以结果是这样了
所以请记住java是传值这个概念