1. 值传递

    使用一个定义好的变量 赋值给另外一个定义好的变量 若变量为基本数据类型, 此时变量所保存的是数据值(等同于复制了一个值 改变任意一个变量的值 都不会影响到另外一个变量)
    基本数据类型: byte short int long double float char boolean
    例:

    1. // 基本数据类型
    2. int a = 10;
    3. int b = a;
    4. b = 20;
    5. System.out.print("a = " + a + " b = " + b );

    输出结果:
    a = 10 b = 20

    1. 引用传递

    使用一个定义好的变量 赋值给另外一个定义好的变量 若变量为引用数据类型, 此时变量所保存的是堆空间中的地址值(等同于两个人操作同一台电脑 任何一个人对电脑进行操作 另外一个人也会收到影响)

    1. // 引用数据类型
    2. int[] array = new int[]{1,9,4,5};
    3. int[] nums = array;
    4. nums[0] = 999;
    5. System.out.print("array[0] = " + array[0] + " nums[0] = " + nums[0]);

    输出结果:
    array[0] = 999 nums[0] = 999

    1. 方法形参的值传递与引用传递 ```java

    /**

    • 方法形参的赋值测试
    • 值传递
    • 引用传递 */ public class ValueTransfer {

      public static void main(String[] args) {

      1. // 基本数据类型
      2. int num = 10;
      3. // 引用数据类型
      4. int[] array = new int[]{1,9,4,5};
      5. ValueTransfer test = new ValueTransfer();
      6. System.out.println("值传递操作前num = " + num);
      7. // 值传递测试
      8. test.updateNum(num);
      9. System.out.println("值传递操作后num = " + num);
      10. System.out.println("引用传递操作前array[0] = " + array[0]);
      11. // 引用传递测试
      12. test.updateArray(array);
      13. System.out.println("引用传递操作后array[0] = " + array[0]);

      }

    1. /**
    2. * 值传递测试
    3. * 方法参数为基本数据类型 因此为值传递
    4. * 基本数据类型: byte short int long double float char boolean
    5. * 值传递(复制一个变量 方法中对变量的任何操作都不会影响到原来的变量)
    6. * @param num
    7. */
    8. public void updateNum(int num) {
    9. num = 0;
    10. }
    11. /**
    12. * 引用传递测试
    13. * 方法参数为引用数据类型
    14. * 引用传递(将变量在堆中的地址值复制给新变量 新变量发生改变 原来的变量也会收到影响)
    15. * @param array
    16. */
    17. public void updateArray(int[] array) {
    18. // 将下标0的值修改为999
    19. array[0] = 999;
    20. }

    } ```