补充前提:计算机在数据储存方式在运行时,计算机的内存条会开辟相应的内存区,一个为栈(先进后出),一个为堆(先进先出)。
概念:1、值传递:传递值,在函数中形参发生变化不影响实参;
2、地址传递:又名引用传递,传递引用对象,在函数中形参的变化会影响实参
以实际代码为例:
1、值传递
int score =100;//赋值
System.out.println(score);
test(score);//调用函数
System.out.println(score);//此时输出的值认为100,a新的赋值不会对其值产生影响
}
public static void test(int a) { //将score的值赋给变量a
System.out.println("###"+a);
a=0;//仅仅改了a的值对score的值没改变
2、地址传递
int score [] = {100};//数组
System.out.println(score);//此处输出的是数组的地址
System.out.println(score[0]);//此处输出的是数组的值
test(score);//值传递
System.out.println(score[0]);//地址,值已经被传递
}
public static void test(int [] array) {
System.out.println(array);
array[0] = 0;//堆,后执行,将score的值改变了