🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 参数传递 形式参数:用于接收实际数据的变量 实际参数:实际参与运算的变量 ## 方法的形式参数为基本数据类型 方法的参数是基本类型: 形式参数的改变不影响实际参数。 ``` public static void main(String[] args) { // 定义变量 int a = 10; int b = 20; System.out.println("1.a:" + a + ",b:" + b);// a:10,b:20 change(a, b); System.out.println("2.a:" + a + ",b:" + b);// a:10,b:20 } public static void change(int a, int b) { // a=10,b=20 System.out.println("3.a:" + a + ",b:" + b);// a:10,b:20 a = b; // a=20; b = a + b; // b=40; System.out.println("4.a:" + a + ",b:" + b);// a:20,b:40 } ``` > 输出: > 1.a:10,b:20 > 3.a:10,b:20 > 4.a:20,b:40 > 2.a:10,b:20 程序运行结束后,a、b仍然为它们最初的值 ## 方法的形式参数为引用数据类型 方法的参数是引用类型: 形式参数的改变直接影响实际参数 ``` // 定义数组 int[] arr = { 1, 2, 3, 4, 5 }; // 遍历数组 for (int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } System.out.println("----------------"); change(arr); for (int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } } public static void change(int[] arr) { for (int x = 0; x < arr.length; x++) { // 如果元素是偶数,值就变为以前的2倍 if (arr[x] % 2 == 0) { arr[x] *= 2; } } } ``` > 本质原因还是因为引用类型在堆中开辟了新空间存放内容,栈中的操作都能实际作用在它们身上。