【封装Java传值调用】
先看下面的一段代码:
package com.ivantian.CoreFengZhuang;
//call by values
//call by address
public class Difference {
int x = 10; // 成员变量
public static void main(String[] args) {
int a = 10;
int b = a;
System.out.println("这是传值引用:");
System.out.println("测试前的数据:");
System.out.println("a的数值是:" + a + " b的数值是:" + b);
a = 20;
System.out.println("测试后的数据:");
System.out.println("a的数值是:" + a + " b的数值是:" + b);
System.out.println();
System.out.println("这是传地址引用:");
Difference diff = new Difference();
Difference diff1 = diff; // 让 diff拥有同样的参考
System.out.println("测试前的数据:");
System.out.println("diff.x = " + diff.x +" diff1.x = " + diff1.x);
diff.x = 100;
System.out.println("测试后的数据:");
System.out.println("diff.x = " + diff.x +" diff1.x = " + diff1.x);
}
}
//执行结果如下
/*
这是传值引用:
测试前的数据:
a的数值是:10 b的数值是:10
测试后的数据:
a的数值是:20 b的数值是:10
这是传地址引用:
测试前的数据:
diff.x = 10 diff1.x = 10
测试后的数据:
diff.x = 100 diff1.x = 100
*/
不错,是和C/C++的一些程序示例是相似的,实际上,在C++中有两种传递参数的方式:传值调用(call by alues) 和 传参考调用(call by reference)的方式,而在Java中只有传值调用。你不仅会好奇的问,上面的例子中diff不是传递的"参考"吗?更多精彩教程请关注:xp系统之家官网