java学习笔记4:方法、数组、递归

一、方法
1、定义:把一个功能进行封装起来,方便重复调用,实现一个特定功能的代码块。
2、格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
             方法体;
			return 返回值;
		}

(1)、修饰符:目前使用 public static
(2)、返回值类型:用于限定返回值的数据类型
(3)、方法名:就是一个名称,它的存在是为了方便我们调用方法
(4)、参数类型 : 限定调用方法时传入参数的数据类型
(5)、参数名 :是一个变量,接收调用方法时传入的参数,这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6)、方法体 :完成功能的代码
(7)、return :结束方法以及返回方法指定类型的值
(8)、返回值 :就是功能的结果,由return带回,带回给调用者
注意:
①方法不调用不执行
②方法与方法是平级关系,不能嵌套定义
③方法定义的时候参数之间用逗号隔开
④方法调用的时候不用在传递数据类型
⑤如果方法有明确的返回值,一定要由return带回一个值

例如:定义一个方法求数组中的最大值

public class ForDemo {
    public static void main(String[] args) {
        int[] arr={1,2,4,5,36,9,6};
        System.out.println(show(arr));
    }
    public static int show(int[] arr){
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(max<arr[i]){
                max=arr[i];
            }
        }
        return (max);
    }
}

3、方法的重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同(即参数个数不同、参数类型不同),与返回值无关。
例如:

 public static void main(String[] args) {
        
    }
    public static int add(int a,int b){
        
        return 0;
    }

    public static int add(int a, float b) {

        return 0;
    }

    public static int add(int a,int b, float c) {

        return 0;
    }

二、数组
数组是存储同一种数据类型多个元素的集合。相当于一个容器。数组既可存储基本数据类型,也可存储引用数据类型。
1、一维数组
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
数组初始化:数组必须先初始化,然后才能使用。就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
初始化分类:静态初始化和动态初始化;
①、动态初始化:
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
例如:int[] arr=new int[5];
②、动态初始化:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
例如: int[] arr = new int[]{12,52,21};
2、二维数组
格式:①数据类型[ ][ ] 变量名 = new 数据类型[i][j];
② 数据类型[][] 变量名 = new 数据类型[i][];
③数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
常出现的问题:
a:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:访问的索引超出了数组的长度。
b:NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。

三、递归
在方法中调用方法本身称为递归
注意:1.递归要有出口,否则就是死递归 死递归会造成栈溢出
2.递归的次数不宜过多,否则也会有栈溢出的风险
举例:①、求5的阶乘

 public static void main(String[] args) {
        long num=jieCheng(5);
        System.out.println(num);
    }
  private  static long jieCheng(int i) {
        if(i==1){
           return 1;
        }else{
            return i*jieCheng(--i);
        }

    }

②、兔子问题(斐波那契数列)
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

  分析:
            月份    对数
            1          1
            2          1
            3          2
            4          3
            5          5
            6          8
            7          13
            6          21
           ...          ...

由上可知:1 1 2 3 5 8 13 21 斐波那契数列 从第三个数开始,每个数等于他前两个数之和
代码:

  public static void main(String[] args){
  int num= rabbitSum(20);
        System.out.println(num);
    }
    private static int rabbitSum(int i) {
        if(i==1||i==2){
           return 1;
        }else{
            return rabbitSum(i-1)+rabbitSum(i-2);
        }
    }
}
发布了24 篇原创文章 · 获赞 11 · 访问量 2064

猜你喜欢

转载自blog.csdn.net/weixin_43791069/article/details/84801587