JAVA基础(八)——方法重载、可变参数个数

1、方法重载

定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可

  • “两同一不同”:同一个类、相同方法名;参数不同或者参数类型不同
  • 方法是否重载和方法的权限修饰符、返回值类型,形参变量名、方法体都没有关系
	public int add(int x, int y){
    
    
        return x+y;
    }

    public double add(double x, double y){
    
    
        return x+y;
    }
    
	public int max(int x, int y){
    
    
        return x>y ? x : y;
    }

    public double max(double x, double y){
    
    
        return x>y ? x : y;
    }

    public double max(double x,double y,double z){
    
    
        double  max1 = x>y? x:y;
        return max1>z?max1:z;
    }

2、可变个数形参

  • 格式:数据类型 …变量名
  • 当调用可变个数的形参时,传入的个数可以是0个、1个、多个
  • 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
  • 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载(不能共存)
  • 可变个数形参在方法的形参中,必须声明在末尾,且最多只能声明一个可变形参
    public void show(String ...str){
    
    
        System.out.println(str[1]);
    }
    public  void show(String[] str){
    
    
        for(int i=0;i<str.length;i++){
    
    
            System.out.println(str[i]);
        }
    }
    public void show(int i,String ...strs){
    
    
        
    }

3、关于变量赋值

  • 如果是基本数据类型变量,此时赋值的是变量所保存的变量值
  • 如果是引用数据类型变量,此时赋值的是变量所保存的数据的地址值
public class HelloWorld {
    
    
    public static void main(String[] args) {
    
    
        PassObject p = new PassObject();
        p.printAreas(new Cricle(),5);
    }

}
class Cricle{
    
    
    double radius;

    public double findArea(){
    
    
        return  Math.PI*radius*radius;
    }
}

class PassObject{
    
    
    public void printAreas(Cricle c,int time){
    
    
        System.out.println("radius\t\tareas");
        for(int i=1;i<=time;i++){
    
    
            c.radius = i;
            double area = c.findArea();
            System.out.println(area+"\t\t"+i);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42164004/article/details/114117643