您的位置:首页 > 其它

关于是值传递还是引用传递的问题

2017-09-06 17:50 537 查看
刚才群里有人问这个问题,其实这是一个基础问题。弄清楚内存你就懂了。先看代码:

public class TransTest {
static class Me {
int i;
}

public static void changeBasicType(int i) {
i = 100;
}

public static void changeRefType(Me m) {
m.i = 100;
}

public static void changeString(String str) {
str = "java";
}

@Test
public void doTest() {
int a = 20;
changeBasicType(a);
System.out.println(a);
/***************************/
Me mm = new Me();
mm.i = 20;
changeRefType(mm);
System.out.println(mm.i);
/********************************/
String xx = "hello";
changeString(xx);
System.out.println(xx);
}
}


打印结果:

20
100
hello


内存模型(比较粗糙,简略看下):



总结:调用传参方法时,对方法里面的参数操作一致视为“=”, 即赋值的作用。

例如:

//调用这句时,相当于m = mm; m指向mm的对象。
changeRefType(mm);

public static void changeRefType(Me m) {
//调用这句时,改变了这个对象i的值。
m.i = 100;
}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: