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

Java函数的形参与实参传递方式是什么?

发布时间:2023-06-15 23:38:33

Java函数的形参与实参传递方式是值传递。

值传递指的是将实参的值复制一份,传递给形参,形参得到的是实参的副本。在函数内部对形参的修改,不会改变实参的值。当函数结束时,形参的值会被销毁,不会对实参造成影响。

值传递的优点是传递的数据安全可靠,不会对原数据造成影响。缺点是如果传递的数据量比较大,会占用较多的内存空间。

值传递的例子如下:

public static void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}

public static void main(String[] args) {
    int x = 10;
    int y = 20;
    swap(x, y);
    System.out.println("x=" + x + ", y=" + y);
}

在上面的例子中,我们创建了一个swap函数来实现两个参数的交换。我们在主函数中传递了两个整数xy,但是在swap函数中进行的操作不会改变xy的值,因为它们传递给swap函数的是值的副本。

值传递还有一个概念,叫做引用传递。引用类型的变量实际上是指向了内存中的对象,因此 Java 中的引用传递是类似于指针的传递,但是传递的还是指针值的副本,而不是指针本身。因此,修改传递的参数的引用的值,不会改变实参变量的指向,但修改对象值本身,会改变实参变量的相应值。

下面举一个例子来说明引用传递:

public static void modify(int[] arr) {
    arr[0] = 100;
}

public static void main(String[] args) {
    int[] arr = new int[]{0, 1, 2};
    modify(arr);
    System.out.println(Arrays.toString(arr));
}

在这个例子中,我们定义了一个modify函数,参数为一个整型数组。在函数内部,我们将这个数组的 个元素修改为100。在主函数中,我们传递了一个长度为3的整型数组arrmodify函数。打印arr的值会发现,数组的 个元素已经被修改为100。

这个例子中,我们传递的是数组的引用值的副本,但由于它指向的对象还是相同的,因此在modify函数中对数组进行的修改,会改变相应的实参变量的值。

总之,Java函数的形参与实参传递方式是值传递。对于值类型的变量,传递的是值的副本;对于引用类型的变量,传递的是引用值的副本,但是它们指向的对象还是相同的。在函数内部修改形参的值不会改变实参的值,但修改形参所指向的对象的值会影响实参的值。