值传递是指将实参的副本传递给形参,函数内部对形参的修改不会对实参产生影响。在 Java 中,所有的基本数据类型都是以值传递的方式进行函数调用。

下面将分三个段落介绍如何在 Java 中实现值传递。

1. 基本数据类型的值传递

Java 中的基本数据类型(如 int、float、boolean 等)都是按值传递的方式进行函数调用。当我们将一个基本数据类型作为参数传递给一个函数时,函数会创建一个新的变量并将实参的值复制给形参。在函数内部对形参的修改不会对实参产生影响,因为实参和形参分别在内存中的不同位置存储。

2. 对象的值传递


Java 中的对象(包括自定义的类对象和内置的数据结构对象)在函数调用时也是按值传递的方式进行的。虽然传递的是对象的引用,但是函数中的形参和实参拥有各自的引用,它们都是指向同一个对象的。因此,当对形参引用的对象进行修改时,实参引用的对象也会受到影响。但是,如果在函数中将形参指向另外一个对象,那么实参的引用不会改变。

3. 示例代码

下面是一个示例代码,展示了 Java 中值传递的特点:

public class Main {
    public static void main(String[] args) {
        int x = 5;
        modifyValue(x);
        System.out.println("x = " + x); // 输出结果为:x = 5
        
        StringBuilder sb = new StringBuilder("Hello");
        modifyReference(sb);
        System.out.println("sb = " + sb.toString()); // 输出结果为:sb = Hello World
    }
    
    public static void modifyValue(int num) {
        num = num + 1;
    }
    
    public static void modifyReference(StringBuilder str) {
        str.append(" World");
    }
}
Java

上述代码中,首先定义了一个整型变量 x 和一个 StringBuilder 对象 sb。然后分别调用 modifyValue 和 modifyReference 函数,并通过参数传递 x 和 sb 的引用。在 modifyValue 函数中,对形参的值进行修改并不会影响实参 x 的值。而在 modifyReference 函数中,对形参引用的对象进行修改会影响实参 sb 引用的对象。