Java函数传递参数的方式有哪些?
发布时间:2023-05-20 08:14:33
Java函数传递参数的方式主要有值传递和引用传递两种方式。
1. 值传递
值传递是指将实参的值复制一份给形参,函数内部对形参的改变不会影响实参的值。Java 的基本类型参数(如 int、float、char 等)都是采用值传递方式进行传递的。示例代码如下:
public class Example {
public static void main(String[] args) {
int a = 10;
func(a);
System.out.println(a); // 输出 10
}
public static void func(int b) {
b = b + 10;
System.out.println(b); // 输出 20
}
}
2. 引用传递
引用传递是指将实参的地址传递给形参,函数内部对形参的操作会直接影响到实参的值。Java 的对象、数组参数都是采用引用传递方式进行传递的。示例代码如下:
public class Example {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
func(arr);
System.out.println(arr[0]); // 输出 10
}
public static void func(int[] arr) {
arr[0] = 10;
System.out.println(arr[0]); // 输出 10
}
}
需要注意的是,Java 中的 String 对象虽然是对象,但是在函数传递时却是采用值传递的方式传递的,这是因为 String 类是不可变类(Immutable Class),即 String 对象一旦创建就不能被修改,所以函数操作的是一个新创建的对象,而不是原来的对象。示例代码如下:
public class Example {
public static void main(String[] args) {
String str = "hello";
func(str);
System.out.println(str); // 输出 hello
}
public static void func(String s) {
s = s + " world";
System.out.println(s); // 输出 hello world
}
}
除了值传递和引用传递,Java 还支持可变参数列表的传递方式。可变参数列表是指方法的参数数量是可变的,而且所有的参数类型都必须相同,这样就不需要在方法中声明一个数组来接收参数了。可变参数列表使用省略号(...)表示。示例代码如下:
public class Example {
public static void main(String[] args) {
print("hello", "world", "java");
}
public static void print(String... strs) {
for (String str : strs) {
System.out.println(str);
}
}
}
这里函数 print() 可以接受任意数量的字符串参数,并将它们按顺序输出。
