输出的d为什么是“badword”,而不是“goodwordgood”
public class A {
public void change(StringBuffer a,StringBuffer b){
b=a;
b.append("good");
}
}
public class B{
StringBuffer c=new StringBuffer("good word");
StringBuffer d=new StringBuffer("bad word");
public void change2(){
A a=new A();
a.change(c,d);
System.out.println("c:"+c.toString());
System.out.println("d:"+d.toString()); } }
建议以后的方法,写的时候都用返回值,你这样写小心把自己绕混,非基本类型复制的都是地址
假如你是包租婆,一栋楼有101,102,103之类的房间
101假设是你的StringBuffer c,假设101住个学生妹;102假设是你的StringBuffer d,假设102住个偶像
你的change方法就好比你拿了张a4纸画了两个圈圈,第一个圈圈写了阿拉伯数字101,第二个写了102,你让b = a那不就是让圈②等于圈①么,第一个圈圈写了什么?写了阿拉伯数字101对不对?
那么,你就把阿拉伯数字102用涂改液盖住,在上面重新写了圈①的内容101,那么第一个圈圈是101,第二个圈圈也是101
然后你操作a,也就是操作101房间,假设给学生妹送了一台苹果手机
那么请问从头到尾102房间你有什么赋值行为么?我说了非基本类型复制的都是地址,也就是说只复制个房间号,这个操作只是写房间号,只是写房间号!和房间里住个什么人根本没有半毛钱关系!
【那么什么时候有关系?】
如果数字1表示学生妹,2表示偶像
int c = 1;
int d = 2;
public void change (int a, int b)
{
b = a;
a += 10;
}
这样的话,b = a的操作就是让102的房间住进和101同样的人,101住着一个学生妹,那么就让102也住进一个学生妹,然后你给101的学生妹一个苹果手机,那么,101的学生妹有个手机,102只有个学生妹
int是java基本类型
下一篇:求推荐大学生用的笔记本电脑
上一篇:5G如何操作