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

Java函数如何传递参数给一个函数?

发布时间:2023-08-03 05:08:11

在Java中,函数可以通过参数列表接收参数。当调用一个函数时,可以向函数传递各种类型的参数,包括基本数据类型和引用类型。

在Java中,参数传递有两种方式:按值传递和按引用传递。

1. 按值传递:当传递一个基本数据类型(如int,char,float等)作为参数时,实际上是将参数的值复制一份传递给函数。函数对参数值的修改不会影响调用方传入的原始值。

例如,定义一个函数来计算两个整数的和:

public static int add(int a, int b) {
    return a + b;
}

调用该函数时,传递的实际参数的值会被复制一份给形式参数a和b。

int x = 5;
int y = 10;
int sum = add(x, y);
System.out.println(sum);  // 输出15
System.out.println(x);  // 输出5,原始值不受函数的影响

2. 按引用传递:当传递一个对象作为参数时,实际上是传递对象的引用。函数中的形参将引用指向相同的对象。这意味着函数中对参数对象的修改会影响调用方传入的原始对象。

例如,定义一个函数来修改一个对象的属性:

public static void changeName(Person person, String newName) {
    person.setName(newName);
}

调用该函数时,传递的实际参数person的引用会被复制一份给形式参数person。形式参数person和实际参数person将引用相同的对象。

Person p = new Person("John");
System.out.println(p.getName());  // 输出John

changeName(p, "Tom");
System.out.println(p.getName());  // 输出Tom,函数修改了对象的属性

需要注意的是,虽然传递引用给函数时,函数可以修改对象的属性,但是不能直接修改引用的指向。也就是说,函数不能修改传递的引用本身。

例如,定义一个函数来修改一个引用的指向:

public static void changeReference(Person person) {
    person = new Person("Jane");
}

调用该函数时,传递的实际参数person的引用会被复制一份给形式参数person。形式参数person指向一个新的Person对象,但实际参数person仍然指向原始的Person对象。

Person p = new Person("John");
System.out.println(p.getName());  // 输出John

changeReference(p);
System.out.println(p.getName());  // 输出John,函数无法修改引用的指向

总结:在Java中,函数可以通过参数列表接收参数。按值传递是传递参数的值的副本,不会影响原始值;按引用传递是传递参数的引用,函数可以修改引用所指向的对象的属性,但不能修改引用本身的指向。