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函数来实现两个参数的交换。我们在主函数中传递了两个整数x和y,但是在swap函数中进行的操作不会改变x和y的值,因为它们传递给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的整型数组arr给modify函数。打印arr的值会发现,数组的 个元素已经被修改为100。
这个例子中,我们传递的是数组的引用值的副本,但由于它指向的对象还是相同的,因此在modify函数中对数组进行的修改,会改变相应的实参变量的值。
总之,Java函数的形参与实参传递方式是值传递。对于值类型的变量,传递的是值的副本;对于引用类型的变量,传递的是引用值的副本,但是它们指向的对象还是相同的。在函数内部修改形参的值不会改变实参的值,但修改形参所指向的对象的值会影响实参的值。
