java中方法参数传递 值传递 和 引用传递有什么区别

奋斗的软件工程师 / 2024-07-19 / 原文

在 Java 中,方法参数传递有两种类型:值传递和引用传递。

值传递

  • 值传递是指将参数的副本传递给方法。
  • 对于基本类型(如 int、double、boolean),值传递会创建参数值的副本并将其传递给方法。
  • 对副本所做的任何更改都不会影响原始值。

引用传递

  • 引用传递是指将参数的引用传递给方法。
  • 对于对象(引用类型),引用传递会将指向对象的指针传递给方法。
  • 对对象所做的任何更改都会影响原始对象。

示例:

考虑以下 Java 代码:

public class PassByValueDemo {

    public static void main(String[] args) {
        int x = 10;
        changeValue(x); // 值传递
        System.out.println(x); // 输出:10

        String s = "Hello";
        changeReference(s); // 引用传递
        System.out.println(s); // 输出:World
    }

    public static void changeValue(int x) {
        x = 20;
    }

    public static void changeReference(String s) {
        s = "World";
    }
}

在上面的示例中:

  • changeValue 方法对基本类型变量 x 进行值传递。对 x 所做的更改不会影响原始值,因此 main 方法中打印的 x 值仍然为 10
  • changeReference 方法对引用类型变量 s 进行引用传递。对 s 所做的更改会影响原始对象,因此 main 方法中打印的 s 值变为 World

总结:

  • 值传递传递参数的副本,对副本的更改不会影响原始值。
  • 引用传递传递参数的引用,对对象的更改会影响原始对象。