方法的参数传递:
1、形参:方法声明时,方法小括号内的参数。
2、实参:调用方法时,实际传入的参数的值。
3、规则:java中的参数传递机制:值传递机制。
形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量。
形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。
下面是参数传递的程序,搞清楚内存关系即可以明白java中方法的参数传递机制。(附内存结构)
class Value {
int i = 15;
}
class Test {
public static void main(String argv[]) {
Test t = new Test();
t.first();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i) {
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
//交换俩变量的值
public class TestArgsTransfer {
public static void main(String args[]){
//使用swap()方法并不能交换两变量的数值。
TestArgsTransfer sw= new TestArgsTransfer();
int i=10;
int j=5;
System.out.println(" i="+i+" j="+j);//i=10 j=5
sw.swap(i, j);//将i的值传给m,j的值传给n
//int temp = i;
//i = j;
//j=temp;
//验证i,j的值是否交换
System.out.println(" i="+i+" j="+j);//这里的i还是等于10,j还是等于5。
}
//定义一个方法,交换两个变量的值。(只是改了m,n的值,没有影响i,j的值。)
public void swap(int m,int n){
int temp = m;
m = n;
n=temp;
System.out.println(" m="+m+" n="+n);//m=5 n=10
}
}
运行结果:
结果显示:成功交换两个变量的值。
//如下程序不能交换两个变量的值。
public class TestArgsTransfer {
public static void main(String args[]){
//使用swap()方法并不能交换两变量的数值。
TestArgsTransfer sw= new TestArgsTransfer();
int i=10;
int j=5;
System.out.println(" i="+i+" j="+j);//i=10 j=5
sw.swap(i, j);//将i的值传给m,j的值传给n
//int temp = i;
//i = j;
//j=temp;
//验证i,j的值是否交换
System.out.println(" i="+i+" j="+j);//这里的i还是等于10,j还是等于5。
}
//定义一个方法,交换两个变量的值。(只是改了m,n的值,没有影响i,j的值。)
public void swap(int m,int n){
int temp = m;
m = n;
n=temp;
System.out.println(" m="+m+" n="+n);//m=5 n=10
}
}
因为形参是基本数据类型。