值传递
package com.vince.zhichuandi;
public class Zhichuandi {
// 值传递:在方法被调用的时候,传递的参数是按值的备份传递的,也就是说,传递之后形参和实参就互不相干了
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 10; // 备份一个x的值为10
test(x);
System.out.println(x);
}
// 实参的值作为形参的初始值,对形参做了初始化,传递之后就互不相干了,,此时就算修改形参的值,实参的值也不会发生改变
public static void test(int x) {
System.out.println(x);
x = x * 2;
System.out.println(x);
}
}
结果
10
20
10
引用传递
package com.vince.zhichuandi;
public class Yinyongchuandi {
// 引用传递:在方法被调用的时候,传递的是值的引用,也就是对象的引用变量,那么传递前和传递后指向的是同一个内存空间
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A();
System.out.println("a.age=" + a.age);
test(a);
// 测试实参的值,
System.out.println("调用之后" + a.age);
}
// 传递的是对象的引用变量指向的内存地址,地制的值是不会发生变化,,所以,形参和实参所指向的还是同一个内存地址,,形参改变的只是地址中的值
public static void test(A a) {
int m;
m = a.age = 20;
System.out.println(m);
}
}
class B{
public int age = 0;
}
a.age=20
20
调用之后20