什么是对象,可变参数,重载,递归

1.类和对象

  • 1.一个方法可以有0个参数,也可以有多个参数,中间用,隔开
  • 2.参数类型可以为任意类型,基本数据类型还有引用数据类型
  • 3.调用参数方法的时候,一定要对应着我们的参数列表,传入相同的和兼容的
  • 4.定义的时候称为行参,调用的时候称为实参
  • 6.同一个类中调用方法直接调用就行了
  • 7.不同类中去调用方法,需要用对象名来调用
  • 8.跨类方法的调用和访问修饰符有关
public class Class04 {
    public static void main(String[] args) {
        //如何去创建对象
        //1.先声明在创建
        AA aa;//先声明aa
        aa=new AA();//创建
        //2.直接创建
        AA aa1=new AA();
        //如何访问属性? 对象名.属性名
    }
}
class AA{
    int id;
}

2.可变参数:

  • 基础语法:访问修饰符 返回类型 方法名(数据类型…行参名){}
  • 注意事项:
  • 1.可变参数的实参,可以为0个或者多个
  • 2.可变参数的实参可以为数组
  • 3.可变参数的本质就是一个数组
  • 4.可变参数在最后
  • 5.一个行参列表里面只能够出现一个可变参数
/**
 *有三个方法,分别实现返回姓名和两门成绩总分,返回姓名和三门成绩的总分,返回姓名和五门成绩的总分,封装成一个可变参数的方法!
 */
public class Print02 {
    public static void main(String[] args) {
        MeThed meThed = new MeThed();
        System.out.println(meThed.showScore("张鑫", 80, 90));
        System.out.println(meThed.showScore("张鑫", 100, 90, 120));
        System.out.println(meThed.showScore("张鑫", 100, 120, 130, 140, 150));
    }
}

class MeThed {
    public String showScore(String name, double... scores) {
        double MyScores = 0;
        for (int i = 0; i < scores.length; i++) {
            MyScores += scores[i];
        }
        return name + "有" + scores.length + "门课成绩的总分为" + MyScores;
    }
}

3.方法的重载 overload

  • 减轻了起名的麻烦 减轻了记名的麻烦

  • 在同一个类里面,允许存在一个以上同名方法

  • 注意事项和使用细节

    • 1.方法名 必须相同
    • 2.行参列表 必须不同
    • 3.与返回值无关,只看参数列表。
    • 4.返回类型 无要求
    public class Overload01 {
        public static void main(String[] args) {
            MyCalculator myCalculator = new MyCalculator();
            System.out.println(myCalculator.num(4, 5));
            System.out.println(myCalculator.num(7, 5));
            System.out.println(myCalculator.num(5, 7.8));
            System.out.println(myCalculator.num(1, 2, 3));
        }
    }
    
    class MyCalculator {
        //两个整数的和
        public int num(int n1, int n2) {
            System.out.println("int num(int n1,int n2)会被调用");
            return n1 + n2;
        }
    
        //一个double和一个int的和
        public double num(double n1, int n2) {
            System.out.println("double num(double n1,int n2)会被调用");
            return n1 + n2;
        }
    
        //一个int和一个double的和
        public double num(int n1, double n2) {
            System.out.println("double num(int n1,double n2)会被调用");
            return n1 + n2;
        }
    
        //三个int的值相加
        public int num(int n1, int n2, int n3) {
            System.out.println("int num(int n1,int n2,int n3)会被调用");
            return n1 + n2 + n3;
        }
    }
    

    4.方法的递归

  • 1.当执行一个方法的时候,就会创建一个新的受保护的独立空间

  • 2.方法的局部变量是独立的,不会相互影响,

  • 3.如果方法中使用的引用数据类型,(数组,对象),就会共享该引用类型的数据

  • 4.递归必须项推出递归的条件逼近,否则就会无限递归,出现死归

  • 5.执行完毕之后,遇到return,就会返回,

  • 6.必须满足两个条件

    ​ (1)有边界,即终止条件

    ​ (2)需要调用自己

    递归中不是必须要有return,比如

    public void test(int n) {
            if (n > 1) {
                test(n - 1);
            }
            System.out.println(n);
        }
    

    递归的实例

    猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个! 以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时,想再吃时(即还没吃),发现只有1个桃子了。问题:最初共多少个桃子?

    思路:逆推
    1.day=10 有1个桃子
    2.day=9 有(day10+1)* 2=4
    3.day=8 有(day9+1)* 2= 10
    4.规律就是前一天的桃子=(后一天的桃子+1)*2
    5.递归

    //求第day天有多少个桃子
	public int peach(int day) {
        if (day == 10) {//-1
            return 1;
        } else if (day >= 1 && day <= 9) {
            return (peach(day + 1) + 1) * 2;
        } else {
            System.out.println("day在1-10");
            return -1;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值