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

Java函数重载及参数传递方法详解

发布时间:2023-06-09 18:13:18

Java函数重载是指在同一个类中,有多个同名的函数,但是它们的参数个数或者参数类型不同。Java函数重载可以提高代码的复用性和可读性,例如在一个类中可以定义多个构造函数,用来初始化不同的对象。

Java函数重载的规则:

1.函数名称必须相同。

2.参数列表必须不同,可以是参数个数不同,参数类型不同或者参数顺序不同。

3.函数的返回值类型可以相同也可以不同。

4.函数重载与函数的修饰符和被调用时参数的引用有关系,与返回值类型无关。

5.函数重载与访问权限无关,只与函数的名称和参数列表有关。

例如,在一个类中定义了两个同名的函数,但是它们的参数个数和类型不同:

public class Calculate{
    public int add(int a, int b){
        return a+b;
    }
    public int add(int a, int b, int c){
        return a+b+c;
    }
}

在调用这两个函数时,就需要根据传递的参数个数和类型选择正确的函数:

Calculate c = new Calculate();
int result1 = c.add(1,2);      //调用add(int a, int b)方法,结果为3
int result2 = c.add(1,2,3);    //调用add(int a, int b, int c)方法,结果为6

Java参数传递方法:

Java参数传递有两种方式:值传递和引用传递。在值传递中,实参的值会被复制一份传递给形参,在函数内部对形参进行修改不会影响到实参。而在引用传递中,实参的地址会被传递到函数内部,对形参进行修改会改变实参的值。

1.值传递

值传递是指将实际参数的值复制一份传递给函数的形式参数,函数内部对形参的修改不会影响到实参的值。例如:

public class Value{
   public void swap(int x, int y){
      int temp = x;
      x = y;
      y = temp;
   }
}

在调用swap方法时,传入的参数值会被复制一份,分别用x和y代替。在函数内部,x和y的值会被交换,但是这对原来的实参没有影响。例如:

Value v = new Value();
int a = 1, b = 2;
v.swap(a, b);
System.out.println("a=" + a + ", b=" + b);

输出结果为:

a=1, b=2

可以看到,调用swap方法后,a和b的值并没有交换。

2.引用传递

引用传递是指将对象的地址作为参数传递给函数,函数内部对形参的修改会影响到实参的值。例如:

public class Reference{
    public void swap(int[] arr){
        int temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
    }
}

在调用swap方法时,传入的参数是一个int数组的引用,即实参和形参都指向同一个数组。在函数内部对形参的修改会影响到实参的值。例如:

Reference r = new Reference();
int[] arr = {1, 2};
r.swap(arr);
System.out.println("arr[0]=" + arr[0] + ", arr[1]=" + arr[1]);

输出结果为:

arr[0]=2, arr[1]=1

可以看到,调用swap方法后,arr数组的第一个元素和第二个元素的值发生了交换。

综上所述,Java函数重载和参数传递是Java编程中非常重要的知识点,掌握了这些知识可以使代码更加灵活高效。