Java方法中的参数变量和传入的变量之间的关系

向东       2024/11/23       技术       共1100字       111

在 Java 中,方法中的参数变量和传入的变量之间的关系可以通过值传递来解释。Java 中,所有方法调用都通过值传递,分为两种情况:

  1. 基本数据类型:方法接收的是传入变量的副本,方法内的修改不会影响原变量。
  2. 引用数据类型:方法接收的是对象引用的副本,引用指向同一个对象,因此通过引用修改对象的内容会影响原对象。但如果在方法内重新赋值引用变量,不会影响外部变量。

基本数据类型

public class Main {
    public static void main(String[] args) {
        int num = 10;
        modifyBasic(num);
        System.out.println("方法调用后,num = " + num); // 输出 10
    }

    public static void modifyBasic(int value) {
        value = 20; // 修改的是方法内的副本,不影响外部变量
    }
}

解释:

  • num 的值被复制一份传递给方法 modifyBasic
  • 方法中修改的是参数 value 的副本,对原变量 num 无影响。

引用数据类型

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        modifyArray(arr);
        System.out.println("方法调用后,arr[0] = " + arr[0]); // 输出 99
    }

    public static void modifyArray(int[] array) {
        array[0] = 99; // 修改的是同一个对象的内容
    }
}

解释:

  • 数组 arr 的引用被复制传递给 modifyArray 方法。
  • 方法内修改数组内容会影响原数组,因为它们指向同一个对象。

重新赋值引用

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        modifyReference(sb);
        System.out.println("方法调用后,sb = " + sb); // 输出 Hello
    }

    public static void modifyReference(StringBuilder builder) {
        builder = new StringBuilder("World"); // 新创建了个对象进行赋值,修改的是引用的副本,不影响外部变量
    }
}

解释:

  • sb 的引用被复制传递给 modifyReference
  • 方法内对引用重新赋值不会影响外部变量。

总结

  • 基本类型:修改的是副本,原变量不变。
  • 引用类型:方法可以修改对象的内容(通过引用操作),但不能改变原变量指向的对象(重新赋值不影响)。

除非注明,向东的笔记本文章均为原创,本文地址 https://www.mengxiangdong.com/jishu/185.html,转载请以链接形式注明出处。

作者: 简介:

《Java方法中的参数变量和传入的变量之间的关系》留言数:0

发表留言