java中的形参和实参:
形参:定义方法时使用的参数,用来接收调用者传递的参数。只有在方法调用的时候,虚拟机才会分配内存单元,方法调用结束就释放分配的内存。
实参:调用方法时传递的参数,实参在传递给调用的方法之前必须被赋值。
java中的值传递分为两种,一种是按数值传递,一种是按地址传递。
java中传递的值都是拷贝的。
java中没有引用传递的概念。网上很多说的java的引用传递其实是按地址传递,对于很多学过c++的来说容易把引用传递和按地址传递弄混。
按数值传递(基本类型)
public class NumberData {
public static void main(String[] args){
int number=5;
System.out.println("number="+number);
change(number);
System.out.println("number="+number);
}
public static void change(int number){
number=10;
System.out.println("number="+number);
}
}
输出结果:
number=5
number=10
number=5
按数值传递,传递的是拷贝的值,这时内存中存在两个相等的基本类型参数,即实际参数和形式参数。对形式参数的改变不影响实际参数。
按地址传递
public class NumberData {
public static void main(String[] args){
int[] a={1,2};
System.out.println(a[0]);
change(a);
System.out.println(a[0]);
}
public static void change(int[] a){
a[0]=10;
}
}
输出结果:
1
10
按地址传递,传递的是拷贝的数组a的地址,所以形参和实参指向同一块内存,当修改形参时,实参也跟着改变。