方法重载与可变参数(java)

一.方法重载的介绍

方法重载是指在同一个类中,方法名相同的方法,但要求形参列表不同!!!

eg:System.out.println();out是PrintStream类型

二.方法重载的好处

(1)减少起名的麻烦

(2)减少记名的麻烦

三.方法重载案例

public class Calculate {
    public static void main(String[] args) {
        Calculate s = new Calculate();
        System.out.println(s.calculate(6,6));
        System.out.println(s.calculate(1.1,6));
        System.out.println(s.calculate(6,1.1));
        System.out.println(s.calculate(1,2,3));
    }
    int calculate(int x,int y)
    {
        System.out.println("calculate(int x,int y)已被调用");
        return x+y;
    }
    double calculate(int x,double y)
    {
        System.out.println("calculate(int x,double y)已被调用");
        return x+y;
    }
    double calculate(double x,int y)
    {
        System.out.println("calculate(double x,int y)已被调用");
        return x+y;
    }
    int calculate(int x,int y,int z)
    {
        System.out.println("calculate(int x,int y,int z)已被调用");
        return x+y+z;
    }
}

运行结果如图所示:

calculate(int x,int y)已被调用
12
calculate(double x,int y)已被调用
7.1
calculate(int x,double y)已被调用
7.1
calculate(int x,int y,int z)已被调用
6

进程已结束,退出代码0

四.方法重载的细节

(1)方法名必须相同

(2)形参列表必须不相同(形参类型,形参个数,两个必须有一个不同,形参名没要求)

(3)返回值类型没要求,即与返回值类型无关!!!

五.可变参数介绍

(1)基本概念:java中可以将同一个类中,同名同功能但参数个数不同的方法,封装成一个方法,就可以通过可变参数实现

(2)基本语法:访问修饰符  返回值类型  方法名(数据类型...  形参名)

(3)可变参数案例:

public class Calculate {
    public static void main(String[] args) {
       Calculate s = new Calculate();
        System.out.println("sum="+s.sum(1,3,5,7,9));
    }
    public int sum(int ... x)
    {
        int sum=0;
        for(int i=0;i< x.length;i++)
        {
            sum=sum+x[i];
        }
        return sum;
    }
}

运行结果如图:

sum=25

进程已结束,退出代码0

由此可见同样是实现求和,可变参数要比方法重载方便很多.

六.可变参数细节

(1)可变参数的实参可以为0个或者任意个

(2)可变参数的实参可以为数组

public class Calculate {
    public static void main(String[] args) {
       Calculate s = new Calculate();
       int [] a={1,2,3};
        System.out.println("sum="+s.sum(a));
    }
    public int sum(int ... x)
    {
        int sum=0;
        System.out.println(x.length);
        for(int i=0;i< x.length;i++)
        {
            sum=sum+x[i];
        }
        return sum;
    }
}

运行结果如下:

3
sum=6

进程已结束,退出代码0

可见当可变参数为数组时,其实就是将数组中的所有元素传进去.

(3)可变参数的本质就是数组

上方案例访问可变参数时就是用下标的形式

(4)可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后

(5)一个形参列表中只能出现一个可变参数

你可能感兴趣的:(java)