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中,函数可以通过参数列表接收参数。按值传递是传递参数的值的副本,不会影响原始值;按引用传递是传递参数的引用,函数可以修改引用所指向的对象的属性,但不能修改引用本身的指向。
