优秀的编程知识分享平台

网站首页 > 技术文章 正文

Java是引用传递还是值传递?(java有没有引用传递)

nanyue 2024-10-22 13:11:34 技术文章 28 ℃

在 Java 中,传递参数的方式被称为按值传递(pass-by-value)。这意味着方法在接收参数时,实际上是将参数的副本传递给方法,而不是直接传递参数本身。

当你将一个变量作为参数传递给一个方法时,Java 会创建该变量的一个副本,并将该副本传递给方法。这意味着方法内部对参数的修改不会影响原始变量的值。这是因为副本和原始变量是不同的存储位置,它们指向不同的内存地址。

对于引用类型的参数(如对象、数组等),副本实际上是对对象引用的拷贝。在方法内部,你可以使用这个副本来访问和修改对象的属性,但是如果你重新分配一个新的对象给这个引用,这个变化不会影响到原始的引用。

通过一个例子来说明

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        modifyStringBuilder(sb);
        System.out.println(sb); // 输出: Hello World
    }

    public static void modifyStringBuilder(StringBuilder str) {
        str.append(" World");
    }
}

在这个例子中,modifyStringBuilder方法接收一个StringBuilder对象的副本。在方法内部,我们修改了副本的值,将其附加了一个字符串。尽管我们修改了副本,但原始的sb变量仍然保持不变,输出结果仍然是"Hello"。

因此,虽然 Java 中的参数传递方式是按值传递,但对于引用类型的参数,传递的是引用的副本。这使得我们可以在方法内部操作引用指向的对象,但不能改变原始引用的指向。

最近发表
标签列表