07面向对象编程基础01

这篇博客介绍了Java中的面向对象编程基础,包括类与对象的基本概念、方法的详细讲解,如方法传参机制、递归及其应用、方法重载、可变参数和作用域。还探讨了构造器、this关键字的使用,并提供了相关的练习和课后题,旨在帮助读者深入理解面向对象编程。
摘要由CSDN通过智能技术生成

类与对象基本概念

类与对象概念对比


方法(method)

方法

方法 的好处:

  • 提高代码的复用性
  • 将实现的细节封装起来,供其他用户调方法的细节

方法的一些细节

细节1

形参列表细节
方法的提示

方法传参机制

​ 对于基本数据类型,传递的是值(拷贝),形参的改变不影响实参

​ 对于引用类型,修改外界的数据的值

public class b_04methodExercise {
   
    public static void main(String args[]){
   
        Judge judge =new Judge();
        boolean isodd =judge.isOdd(3);
        System.out.println("是否为偶数:"+isodd);
        judge.printChar(4,4,'@');

    }
    
}
//编写类,
class Judge{
   
    //有方法,判断一个数是奇数还是偶数,返回boolean,偶数返回true
    public boolean isOdd(int n){
   
        // if(n%2==0){
   
        //     return true;
        // }
        // else{
   
        //     return false;
        // }
        return n%2==0?true:false;
    }
    //根据行列字符打印,字符为#
    public void printChar(int row,int col,char c){
   
        for(int i=1;i<=row;i++){
   
            for(int j=1;j<=col;j++){
   
                System.out.print("  "+c);    
            }  
            System.out.println();
        }
    }
}

递归(recursion)

从最顶级的栈依次向下返回数据

递归的重要规则

递归练习

使用递归方式求斐波那契数列和猴子吃桃问题

public class b_06recursionExercise {
   
    public static void main(String args[]){
   
        TextRecursion textRecursion =new TextRecursion();
        int num = textRecursion.fabonacciSequence(10);
        System.out.println("斐波那契数列的指定数值为:"+num);
        int number =textRecursion.PeachEating(1);
        System.out.println("指定天数桃子数目为:"+number);

    }
    
}

class TextRecursion{
   
    /**
     * 求斐波那契数列
     *  参数:n 第几个数
     * 返回值: 斐波那契数列数
     */
    public int fabonacciSequence(int n){
   
            if(n>2){
   
                return fabonacciSequence(n-1)+fabonacciSequence(n-2);
            }
            else if(n==1||n==2){
   
                return 1;
            }
            else{
   
                return -1;  //数据不合法
            }
    }
    /**
     * 猴子吃桃问题
     * 有一堆桃子,猴子每天吃剩下的桃子的一半并多一个,到第十天(第十天还没吃)便只有一个桃子了。问:总共有多少桃子
     * 参数: 桃子吃的天数
     * 返回值:桃子数目
     */
    public int PeachEating(int n){
   
        if(n>=1&&n<=9){
   
            return (PeachEating(n+1)+1)*2;
        }else if(n==10){
   
            return 1;
        }
        else{
   
            System.out.println("天数不在1-10");
            return -1;
        }
    }
}
经典递归题目

老鼠迷宫问题

public class b_07MiGong {
   
    public static void main(String args[]){
   
        /**
         * 思路:
         * 先创建迷宫,用二维数组表示 int[][] map =new  int[8][7];
         * 先规定map数组的元素值:0表示空白,1表示障碍物
         */
        int[][] map =new int[8][7];
       
        //将最上面和最下面一行,全部设置为1
        for(int i=0;i<7;i++){
   
            map[0][i]=1;
            map[7][i]=1;
        }
        
        //将最左侧一列,右侧一列设置为1
        for(int i=0;i<8;i++){
   
            map[i][0]=1;
            map[i][6]=1;
        }

        //补充内在缺少障碍物
        map[3][1]=1;
        map[3][2]=1;

        //输出当前地图
        System.out.println("======当前地图情况======");
        for(int i=0;i<map.length;i++){
   
            for(int j=0;j<map[i].length;j++){
   
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }

        //使用findWay给老鼠找路
        Solve solve =new Solve();
        boolean answer =solve.findWay(map, 1, 1);
        System.out.println("找路的结果是:"+answer);

        //输出当前地图
        System.out.println("======当前地图情况======");
        for(int i=0;i<map.length;i++){
   
            for(int j=0;j<map[i].length;j++){
   
                System.out.print(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值