关于基本数据类型的值传递:
public class OverloadTest { public static void main(String[] args) { int m = 10; int n = 20; System.out.println(m + " " + n); OverloadTest o1 = new OverloadTest(); o1.swap(m , n); System.out.println(m + " " + n); } public void swap(int m, int n){ int temp = m; m = n; n = temp; } }
这时候输出为:
10 20
10 20
因为返回值为空,做完后弹栈了,局部变量灰飞烟灭,成员变量纹丝不动
但是如果是这样呢?
public class ValueTransfer { public static void main(String[] args) { Data d1 = new Data(); d1.m = 10; d1.n = 20; System.out.println(d1.m + " " + d1.n); d1.swap(d1); System.out.println(d1.m + " " + d1.n); } } class Data{ int m; int n; public void swap(Data data){ int temp = data.m; data.m = data.n; data.n = temp; } }
输出为:
10 20
20 10
这时候转换成功!
因为第一个是对值复制了!
而第二个是复制地址了
一变俱变!
posted on
浙公网安备 33010602011771号