欢迎访问宙启技术站
智能推送

Java 函数参数传递方式解析

发布时间:2023-06-29 04:06:22

在Java中,函数参数的传递方式有两种:按值传递和按引用传递。

1. 按值传递:

按值传递是指将实参的值复制一份给形参,函数内部对形参的修改不会影响实参的值。这是因为Java中的基本数据类型是按值传递的。

例如,当我们调用一个函数时,如果传递一个整数类型的参数,函数内部对该参数进行修改,不会影响原来传递的整数值。

2. 按引用传递:

按引用传递是指将实参的引用复制一份给形参,在函数内部对形参的修改会影响到原来的实参。这是因为Java中的引用类型是按引用传递的。

例如,当我们调用一个函数时,如果传递一个对象类型的参数,函数内部对该对象的属性进行修改,会影响到原来的对象。

需要注意的是,虽然在Java中引用类型是按引用传递的,但是Java中的对象传递的是对象的引用的副本,即对形参对象的修改不会改变实参对象的引用。

示例代码如下:

class Point {
    int x;
    int y;
}

public class PassByValueExample {
    public static void main(String[] args) {
        int a = 10;
        Point point = new Point();
        point.x = 1;
        point.y = 2;

        // 按值传递,不会改变原来的值
        modifyValue(a);
        System.out.println("a: " + a); // a: 10

        // 按引用传递,会改变原来的对象属性值
        modifyObject(point);
        System.out.println("point.x: " + point.x); // point.x: 10
        System.out.println("point.y: " + point.y); // point.y: 20
    }

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

    public static void modifyObject(Point p) {
        p.x = 10;
        p.y = 20;
    }
}

综上所述,Java中的函数参数传递方式有按值传递和按引用传递。对于基本数据类型,采用按值传递的方式,函数内部对形参的修改不会影响实参;对于引用类型,采用按引用传递的方式,函数内部对形参的修改会影响到实参。