JAVA重载|递归|数组|内存

文章详细阐述了Java中方法重载的概念,强调了重载的条件包括同名、同类以及不同的参数列表。接着讨论了方法的调用机制和方法签名。然后,解释了递归的原理,包括直接和间接递归,并分析了递归的优缺点。最后,介绍了数组的定义、特点、初始化方式以及遍历方法,并提及了数组的默认值。
摘要由CSDN通过智能技术生成

重载Overload ****

方法重要的特性--->方法的重载

实现重载的3个条件 :

1.同一个类中的多个方法

2.方法名相同

3.参数列表不同 | 方法签名不同

参数个数
参数类型不同
不同类型的参数顺序不同
    public static void main(String[] args) {
        getsum(1,2);
    }
    public static void getsum(int x,int y){
        System.out.println(x+" + "+y+" = "+(x+y));
    }
    public static void getsum(double x,int y){
        System.out.println(x+" + "+y+" = "+(x+y));
    }
    public static void getsum(int x,double y){
        System.out.println(x+" + "+y+" = "+(x+y));
    }
    public static void getsum(int x,int y,int z){
        System.out.println(x+" + "+y+" + "+z+" = "+(x+y));
    }
  • 注意:

1.调用函数时,先调用参数列表最匹配的,如果没有,参数类型可以向下兼容,但是如果有多个可以兼容的,那么同样也会报错

方法签名 : 方法的唯一标识 方法名+参数列表

重载方法如何调用 : 只根据实参决定

2. 问 :

方法的重载与修饰符是否由有关-->无关

方法的重载与返回值类型是否由有关-->无关

方法的重载与参数名是否由有关-->无关

3.面向对象的三大特性 : 封装 继承 多态

方法就是封装非常具体的体现

类中方法的重载就是多态的一种体现

递归 : 理解

方法内部自己调用自己

递归分类 :

直接递归 : a方法中调用a方法

间接递归 : a方法中调用b方法,b方法中调用方法

递归的实现满足的条件 :

1.递归前进段 : 从第一次调用方法,到临界条件之间,不停的自己调用自己的过程

2.递归后退段 : 达到临界条件之后,将结果返回给上一层的过程

3.临界条件 : 停止自己调用自己的条件

递归优缺点

递归的优点 :

恰当位置使用简单,灵活

递归的缺点 :

容易造成递归死循环,造成栈内存溢出的问题

递归题目的解题思路

    //递归实现1+2+3+.....+n
//1.终止条件-----》n==1
//2,递归关系-----》n项求和等于第n项加上前n-1项求和
    public static int sum(int n){
        if(n<=0){
            return -1;
        }
        if(n==1){
            return 1;
        }else{
            return (n+sum(n-1));
        }

    }

数组

变量和数组:

变量 : 存储单个数据
数组 :存储多个数据

数组定义:

在内存中是一段连续的内存空间,线性序列

相同数据类型数据的有序集合

数组特点 :

  • 1.引用数据类型 []

基本数据类型的数据为对应类型数据值 100 false 'a'

引用数据类型的数据为对象数据 new

  • 2.定长,长度一旦确定不可改变

  • 3.存储的多个数据要求类型相同

  • 4.有序的,索引,根据根据索引区分数组中的每一个空间

索引 :

是数组连续内存空间中每一个空间得到唯一标识

根据索引操作数组中的数据 数组名[索引]

        //获取数组中的值
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        //System.out.println(arr1[3]);
        arr1[1] = 2000;
        System.out.println(arr1[1]);

索引从0开始每次+1

最后一个空间的索引为 : 数组名.length-1

长度 : 数组名.length

定义数组 :

数组的声明 :

数据类型 变量名; -->变量的声明

数组的声明 :

数据类型[] 数组名; --> 推荐

数据类型 数组名[];

数据类型 []数组名;

  //声明
        int[] arr1;
        char arr2[];
        boolean []arr3;

初始化 :

动态初始化 : 先创建数组后赋值

数据类型[] 数组名 = new 数据类型[长度];

数据类型 : 可以为任意数据类型(基本|引用)

长度 : 整数 0~n

        //动态初始化
        arr1 = new int[3];
静态初始化 : 创建数组的同时赋值

数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3....};

数据类型[] 数组名 = {数据1,数据2,数据3....};

        //静态初始化
        arr2 = new char[]{'a','b','c','d'};
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
        System.out.println(arr2[3]);

默认值 : 数组创建没有赋值,存在默认值

整数 : 0

小数 : 0.0

布尔 : false

字符 : 空字符

数组的遍历

for --> 在任意位置迭代

通过for的条件i控制数组的索引变化,在循环体中根据索引操作数组中的数据

for(int i=0;i<= arr.length-1;i++){
            System.out.println(arr[i]);
        }
for(int i= arr.length-1;i>=0;i--){
           System.out.println(arr[i]);
        }
foreach ---> 只能正向迭代

for(数据类型 变量名:数组名|集合名){

根据变量名是使用数组中的每一个数据

}

for(String str:arr){
            System.out.println(str);
        }

通过普通for循环对数组赋值

 //定义一个数组,为数组赋值,从前到后值为10,11,12,13,14,15
        int[] arr2 = new int[5];
        /*arr2[0] = 10;
        arr2[1] = 11;*/

        //for循环控制索引可以实现为数组赋值
        int num = 10;
        /*for(int i=0;i<=arr2.length-1;i++){
            arr2[i]=num++;
        }*/

增强for循环foreach不能对数组赋值,因为操作的是变量i不是数组的索引

//foreach只能遍历,不能赋值,因为i不是索引,只是for循环的局部变量
        for(int i:arr2){
            i=num++;
        }

        for(int i:arr2){
            System.out.println(i);
        }

赋值失败

JAVA内存分布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值