Java递归、数组、排序、面向对象和构造方法

递归

概述

            递归 : 就是在当前方法中, 调用自己
            基本思想 : 以此类推
            递归和迭代是等价的 , 而迭代就是循环 , 所以递归也是重复做某件事
            三要素 : 初始值 , 终止条件 , 步长
            如果循环能做到的 , 就不要使用递归 , 因为递归效率低 , 比较耗内存
            
            应用场景 : 
                一般树状结构 , 需要使用递归来完成
               比如菜单目录 , 每一层目录结构都是一个循环 , 两层就需要嵌套循环 , 那么当不知道有多少层目录的时候 循环就不行了

常见异常

public static void main(String[] args){
    m1();
}
pubic static void m1(){
    //没有终止条件
    m1();
}

数组

概述

            数组 : 是引用数据类型 (类 , 接口 , 数组)
            数组是底层的数据结构 , 几乎任何语言都有 , 数组被分为 索引数组 和 关联数组

数据结构

            数据结构是计算机储存 、组织数据的方式 .数据结构是指相互之间存在一种或多种特定关系的数据元素的集合
            数组
            栈
            链表
            散列
            二叉树 / 红黑树

应用场景

            数组用来存储多个数据 , 比如单个成绩可以用一个变量存储 ,多个的话写多个变量就不合适
            可以使用数组 , 来存储多个数据 , 这样一个变量就可以代替多个变量 , 方便统一操作 , 但是数组中的元素  数据类型必须一致
            int i = 2;
            int[] is = {1,3,5,4,789,456};

数组特性

            可以看做是一个多个相同数据的一个存储容器 , 可以对这些数据进行统一管理
            是一种引用数据类型
                   意味着 数组占用两块空间 , 栈内存  变量保存     堆内存 对象的引用
            是一种线性数据结构 , 内存空间是连续的 , 类似于单元楼
            数据可以保存任意数据的元素, 但是每一维的元素类型必须一致
            数组的长度不能直接更改 , 也就意味着数组一旦确定就不能添加或减少
                   除非新建一个新的数组, 然后把原数组中的元素复制进去 ,在复制的过程中进行 添加和删除
            数组中有一个 length 属性 , 保存的是数组的长度
            并且数组中元素都有一个独一无二的编号(下标)
            要查找数组中的某个元素的时候 , 只需要使用对应的索引下标即可 , 在数组中 0 是第一个元素的下标 , 1则是第二个元素的下标 , 以此类推
                   这种通过内存地址直寻法  , 效率极高
 

            操作 : 增删改查
                结合数组特性, 数组 查找和更改效率高  ,  添加和删除  效率相对较低
            
            与数组相比 , 链表的  添加和删除的效率高  ,  查找和更改效率低

数组声明

            静态声明 : 在知道数组每个元素的值的时候 , 使用静态声明
                   数据类型[] 变量 = {值,值,值,......};
                   int i = 5;
                   int[] is = {1,23,4,5,6};
                   int[][] is2 = { {1,2,3,4,5};   {1,2,3,4,5};   {1,2,3,4,5};   {1,2,3,4,5};   ......};
            
            动态声明 : 在预先不知道每个元素值是多少的时候 , 使用动态声明 , 需要提前指定数组空间长度 ,  并使用默认值占位
                   整数 : 0
                   浮点 : 0.0
                   char : \u0000
                   boolean : false
                   引用类型 : null
            数据类型[] 变量 = new 数据类型[长度];
            int[] is = new int[10];


            数组传递 , 第三种声明方式  静态声明
            数据类型[] 变量 = new 数据类型[]{值,值,值,......};

public static void main(String[] args){
    int [] arr = {1,2,3};
    m1(arr);
    //数组字面量传递
    m1(new int[]{1,2,3});
}

public static void m1(int[] arr){
    for(int i = 0; i < arr.length; i++){
        System.out.println(arr[i]);
    }
}

            数据类型[] 变量   和    数据类型 变量[]
            int[] i = {1,2,3}             int i[] = {1,2,3}

数组的基本操作

获取数据(查)

//长度
System.out.println(is.length);
//首元素  索引/下标  index
//数组对象(数组变量) [下标]
System.out.println(is[0]);
//尾元素
System.out.println(is[is.length-1])

设置数据(改)

//更改操作
//数组[下标] = 值;
is[1] = 1;

遍历

int[] arr = new int[10];
arr[0] = 100;

for(int i = 0; i < arr.length; i++){
    System.out.println
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值