Java函数的参数传递方式及其实例应用。
Java函数的参数传递方式包括值传递和引用传递两种方式。
1. 值传递:
值传递是指将实参的值复制一份,再将复制的值传给形参。在函数内修改形参的值不会影响实参的值。Java中的基本数据类型(如int、double等)都是以值传递方式传递参数的。
示例代码:
public class ValuePassing {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b);
swap(a, b);
System.out.println("a:" + a + ",b:" + b);
}
public static void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
System.out.println("x:" + x + ",y:" + y);
}
}
运行结果:
a:10,b:20 x:20,y:10 a:10,b:20
在上面的代码中,我们定义了一个swap方法来交换两个整数的值。我们首先定义了两个变量a和b,分别赋值为10和20,然后分别输出a和b的值。接着,我们调用了swap方法,将a和b的值传入,交换这两个变量的值。在swap方法中,我们定义了三个局部变量:x、y和temp,分别表示传入的实参和用来交换变量值的临时变量。在交换完成后,我们输出了交换后x和y的值。但是从程序的运行结果可以看出,swap方法对传入的a和b值进行的交换操作并没有生效,a和b仍然分别是10和20。
2. 引用传递:
引用传递是指将对象地址(即引用)复制一份,再将复制的引用传给形参。在函数内修改形参的内容会影响到实参的内容。Java中的对象类型(如数组、类、接口等)都是以引用传递方式传递参数的。
示例代码:
public class ReferencePassing {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
System.out.println("before change: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
change(arr);
System.out.println("after change: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void change(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
}
}
}
运行结果:
before change: 1 2 3 4 5 after change: 2 4 6 8 10
在上面的代码中,我们定义了一个change方法,用于将传入的数组中的每个元素乘以2。我们首先定义了一个int类型的数组arr,包含5个元素:1、2、3、4、5。然后我们输出了数组的元素值,再调用了change方法,将arr数组传入。在change方法中,我们使用for循环遍历传入的数组arr,对其中的元素值进行了修改。最后,我们再次输出了数组的元素值,可以看到数组中的每个元素都被乘以了2。
总结:
在Java中,使用值传递或引用传递来传递函数参数,需要根据参数的类型来决定。如果参数是基本数据类型,则使用值传递,如果参数是对象类型,则使用引用传递。在实际开发中,我们需要根据实际情况选择合适的参数传递方式,来实现我们想要的功能。
