在java中调用方法,数据的传递有两种传递方式,一种是值传递,一种是地址传递
以下是值传递的示例:
public class Use {
static void shrink(int a) {
a=0;
}
public static void main(String[] args) {
int age=100;
shrink(age);
System.out.println(age);
}
}
它的输出结果为100,为什么不是0呢?因为shrink方法中开辟的变量a的空间和主方法中开辟的age空间是不一样的,所以你修改a空间中的值时,age空间中的值不会受影响,这就是值传递的原理,示意图如下:
下面介绍地址传递,以下是地址传递的示例:
public class Rapper{
static void t(String [] a) {
a[0]="bei";
}
public static void main(String[] args) {
String [] id= {"pg"};
t(id);
System.out.println(id[0]);
}
}
它的输出结果是bei,为什么不是pg呢?因为t方法中开辟的变量a的空间中传入的是数组id的首地址,所以修改a[0]就相当于修改该地址中存储的内容,这就是地址传递的原理,示意图如下:
a和id中存储的都是地址0x110,所以修改a[0]就是修改的堆中的值