先说一个概念:Java中只有值传递!!!!!!
- 当我们传递基本数据类型和String类型的变量时,例如下例。
public static void main(){
int x = 12;
System.out.println(x);//输出12
t(x);
System.out.println(x);//这里输出的还是12
//只是将x的值复制一份传递给了y,y=12,然后在t方法中y重新被赋值,所以此时y=0
public static void t(int y){
y = 0;
}
}
- 当我们传递引用类型变量时(类对象、数组等),如下例:
public static void main(){
int[] x = 10;
System.out.println(x[0]);//这里输出10
t(x);//由于这里是把数组x的地址复制了一份,传给了数组y,x与y都指向了内存中的同一个数组对象,所以对数组y进行修改的时候会影响数组x的值。
System.out.println(x[0]);//这里输出0
public static void t(int[] y){
y[0]=0;
}
}