1. 首页
  2. 编程面试题
  3. Java
  4. Java基础

简述Java中什么是值传递和引用传递?



在Java中,值传递(pass by value)和引用传递(pass by reference)是两种传递参数的方式。

值传递是指将实际参数的值复制一份传递给形式参数,即在方法内对形式参数的修改不会影响实际参数的值。在值传递中,方法内对形式参数的修改只在方法内部生效,不会影响方法外部的实际参数。

引用传递是指将实际参数的引用(内存地址)传递给形式参数,形式参数和实际参数指向同一块内存地址。在引用传递中,方法内对形式参数的修改会影响实际参数的值。

下面通过代码演示来说明这两种传递方式:

public class PassByValueExample {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("Before method call: " + num);
        modifyValue(num);
        System.out.println("After method call: " + num);

        StringBuilder sb = new StringBuilder("Hello");
        System.out.println("Before method call: " + sb);
        modifyReference(sb);
        System.out.println("After method call: " + sb);
    }

    public static void modifyValue(int value) {
        value = 20;
    }

    public static void modifyReference(StringBuilder reference) {
        reference.append(" World");
    }
}

输出结果为:

Before method call: 10
After method call: 10
Before method call: Hello
After method call: Hello World

在上述代码中,modifyValue方法使用值传递,将num的值复制一份给value,在方法内部修改value的值不会影响num的值。而modifyReference方法使用引用传递,将sb的引用传递给reference,在方法内部修改reference所指向的对象的值会影响sb的值。

需要注意的是,Java中只有值传递,没有真正的引用传递。即使是传递对象时,实际上是将对象的引用(内存地址)复制一份传递给方法,所以在方法内部修改对象的属性是有效的,但是重新赋值给形式参数是无效的。

发布者:admin,如若转载,请注明出处:https://ai1024.vip/42646.html

QR code
//