KyleWang
发布于 2024-08-16 / 34 阅读
0
0

Java知识(一)

Java 中的参数传递是 按值传递,但对于引用类型,传递的是 引用值的副本

解释:

  • 基本数据类型(primitive types):例如 intdoublechar 等,在方法调用时,传递的是变量的值的副本。这意味着方法内部对参数的修改不会影响到方法外部的原始变量。

  • 引用类型(reference types):例如 StringArrayObject 等,在方法调用时,传递的是引用变量的值的副本。这个副本指向的是同一个对象,所以方法内部对参数的修改会影响到方法外部的原始对象。

示例:

public class Main {

    public static void main(String[] args) {
        int num = 10;
        changeNum(num);
        System.out.println("num: " + num); // 输出:10

        String str = "Hello";
        changeStr(str);
        System.out.println("str: " + str); // 输出:Hello World
    }

    public static void changeNum(int num) {
        num = 20;
    }

    public static void changeStr(String str) {
        str = str + " World";
    }
}

解释:

  • changeNum 方法中,numint 类型,传递的是其值的副本,所以方法内部的修改不会影响到 main 方法中的 num
  • changeStr 方法中,strString 类型,传递的是其引用值的副本,这个副本指向同一个 String 对象。方法内部修改了 str 的值,实际上是修改了同一个 String 对象,所以 main 方法中的 str 也被改变了。

总结:

Java 中的参数传递是按值传递,但对于引用类型,传递的是引用值的副本,这个副本指向同一个对象。因此,方法内部对引用类型参数的修改会影响到方法外部的原始对象。


评论