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

实现Java函数的参数传递方法

发布时间:2023-05-28 12:27:59

Java函数参数的传递方式主要有以下几种:传值调用、传引用调用、传地址调用、传结构体调用、变长参数调用等。

1.传值调用:

传值调用是指在调用函数时,将实参的值复制一份传递给形参,形参和实参是两个不同的变量。在函数内部对形参的任何修改都不会影响到实参本身。

举个例子:

public void test(int a){

    a = 10;

    System.out.print("a的值为:"+a);

}

...

int b = 5;

test(b);

//程序运行结果为:a的值为:10

在上述例子中,将b的值传递给形参a,在函数内部修改a的值为10,但是不会影响到b的值。

2.传引用调用:

传引用调用是指在调用函数时,将实参的内存地址传递给形参,形参和实参指向同一个变量,在函数内部对形参的修改会影响到实参。

举个例子:

public void test(StringBuilder sb){

    sb.append("hello");

    System.out.print("sb的值为:"+sb.toString());

}

...

StringBuilder sb1 = new StringBuilder("java");

test(sb1);

//程序运行结果为:sb的值为:javahello

在上述例子中,sb1的内存地址被传递到了函数中,在函数内部通过append方法修改了sb1的值为"javahello"。

3.传地址调用:

传地址调用是指在调用函数时,将实参的指针地址传递给形参,形参和实参都指向同一个地址,和传引用调用基本相同。

举个例子:

public void test(int[] arr){

    arr[0] = 10;

    System.out.print("arr[0]的值为:"+arr[0]);

}

...

int[] arr1 = new int[]{1,2,3};

test(arr1);

//程序运行结果为:arr[0]的值为:10

在上述例子中,arr1的指针地址被传递到了函数中,在函数内部修改了arr1[0]的值为10。

4.传结构体调用:

传结构体调用是指在调用函数时,将实参的结构体(或类)的内存地址传递给形参,形参和实参指向同一个结构体,在函数内部对形参的修改会影响到实参。

举个例子:

public class Person {

    int age;

    String name;

}

...

public void test(Person p){

    p.age = 20;

    System.out.print("p的年龄为:"+p.age);

}

...

Person person = new Person();

person.age = 10;

test(person);

//程序运行结果为:p的年龄为:20

在上述例子中,person的内存地址被传递到了函数中,在函数内部修改了person的age属性的值。

5.变长参数调用:

变长参数调用是指在调用函数时,可以传递不定长度的参数列表。在函数中可以通过遍历参数列表来进行操作。

举个例子:

public void test(int... args){

    int sum = 0;

    for(int i:args){

        sum += i;

    }

    System.out.print("求和结果为:"+sum);

}

...

test(1,2,3,4,5);

//程序运行结果为:求和结果为:15

在上述例子中,test函数的参数列表可以不确定参数的个数,在函数中通过传入的参数列表求和。

以上就是Java函数参数传递的几种方式,我们可以根据实际需求来选择不同的传递方式。