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

Java中的函数传参详解

发布时间:2023-07-04 15:02:12

在Java中,函数传参是指在函数调用过程中将实际参数传递给形式参数的过程。Java中函数传参的方式主要有值传递和引用传递两种。

1. 值传递(Pass by Value):

值传递是指在函数调用时,将参数的值复制一份传递给形式参数,在函数内部修改形式参数的值不会影响实际参数的值。

public 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); // 输出结果为 x = 10
    System.out.println("y = " + y); // 输出结果为 y = 20
}

在上述例子中,调用swap方法时,实际参数x和y的值被复制一份传递给形式参数a和b,而在swap方法内部修改的是形式参数a和b的值,不会影响实际参数x和y的值。

2. 引用传递(Pass by Reference):

引用传递是指在函数调用时,将参数的引用地址传递给形式参数,实际上形式参数和实际参数指向同一块内存区域,所以在函数内部修改形式参数的值会影响实际参数的值。

public void changeValue(StringBuilder sb) {
    sb.append(" World");
}

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder("Hello");
    changeValue(sb);
    System.out.println(sb.toString()); // 输出结果为 Hello World
}

在上述例子中,调用changeValue方法时,实际参数sb的引用地址被传递给形式参数sb,所以在changeValue方法内部修改的是同一块内存区域的值。

需要注意的是,在Java中,基本类型(如int、char等)都是值传递,而引用类型(如数组、类对象等)都是引用传递。但是,在传递引用类型参数时,不能修改变量的引用地址,即不能改变传入对象的指向;但可以修改对象的属性值。

总结起来,Java中函数传参可以通过值传递和引用传递两种方式进行,值传递不会影响实际参数的值,而引用传递会影响实际参数的值。根据传递数据类型的不同,确定使用何种传递方式。