1.基本数据类型
传递的是数据
public class test {
public static void main(String[] args) {
int a = 1;
int b = 2;
change(a, b);
System.out.println(a); //1
System.out.println(b); //2
}
public static void change(int a, int b) {
a = a +b;
b = b + 1;
}
}
执行内存分析:
1.main方法进入方法栈
2.定义变量a,b都有自己的内存地址
3.调用方法change,传递的是数值,进入方法栈然后出栈,释放内存
4.打印的a,b都是最初定义的变量
2.引用数据类型
传递的是地址
public class test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
System.out.println(arr[2]); //3
change(arr);
System.out.println(arr[2]); //6
}
public static void change(int[] arr) {
arr[2] = 6;
}
}
执行内存分析:
1.main方法进入方法栈
2.定义arr,存在堆内存中(每个元素有自己的内存地址)
3.调用方法change,传递的参数arr指向堆内存地址,则修改了arr