int a=10;
int b=20;
int[]arr={1,2,3,4,5};
change( a,b);
/*change(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}*/
System.out.println("a:"+a+"b:"+b);
}
private static void change(int a, int b) {
a=b;
b=a+b;
System.out.println("a:"+a);
System.out.println("b:"+b);
}
A:20
b:40
a:10b:20
在方法中 如果传递的是引用数据类型,实际传递的是引用数据类型所代表的地址值 都是指向堆内存的中的引用数据。当一个修改地址值所对应的引用数据时,另一个也会发生变化。
public class Arrays2 {
public static void main(String[] args) {
int[]arr={1,2,3,4,5};
//change( a,b);
change(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
private static void change(int[] a) {
for (int i = 0; i < a.length; i++) {
if(a[i]/2==1){
a[i]*=2;
}
System.out.println(a[i]);
}
}
}
1 4 6 4 5
1 4 6 4 5 数组都会变化
内存图解如下
在java中只有值传递