数组

数组
    1.数组的定义
        1.1 数组的概念
            数组是存储同一种数据类型 多个元素的集合 也可以看成是一个容器
            数组既可以存储基本数据类型 也可以存储引用数据类型
            数组 它本身就是一个类型 是一个引用数据类型
        1.2 数组的作用
            可以存储同一个数据类型的多个数据
            可以为数组中的元素分配编号
        1.3 数组的格式
            数据类型[] 数组名 = new 数据类型[数组长度]
            例如
                想要创建一个能够存储10个int类型数据的容器
                int[] array = new int[10]
                分为三个动作:
                    1.声明了一个数组(=号左边的部分)
                    2.创建一个数组对象 在内存中给数组分配存储空间(=号右边 new部分)
                    3.给数组中的元素初始化一个相应数据类型的默认初始化值
        1.4 内存分析
            栈内存 和 堆内存
            java程序在运行时 如何分配内存空间

            栈内存 存储的是基本数据类型的变量数据 / 对象的引用 / 方法
            堆内存 存储new出来的实体 数组/对象
                new出来的东西 叫做实体
                每一个实体 都有内存地址值
                实体中变量都有默认初始化值
                不同数据类型的初始化值不同
                    基本数据类型
                        byte short int 初始化值 0
                        long 初始化值 0L
                        float 初始化值 0.0F
                        double 初始化值 0.0
                        boolean 初始化值 false
                        char 初始化值 a
                    引用数据类型
                        初始化值 null
        1.5.数组的初始化方式
            动态初始化
                就是为数组开辟连续的内存空间 并且为每个数组的元素赋默认值
                格式:
                    数据类型[] 数组名 = new 数据类型[数组长度]
                    在创建的时候 就指定了数组的长度
                    由系统给出默认初始化值
            静态初始化
                就是在创建时 给出存储内容 系统自动分配长度
                格式:
                    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3....元素n}
                    元素之间以逗号进行分割
                简写格式:
                    数据类型[] 数组名 = {元素1,元素2,元素3....元素n}
                    
                    注意:静态初始化的简写格式 不能先声明 后 指向
                        只能在一行书写
        1.6 数组中常见的异常
            /* 空指针异常
                Exception in thread "main" java.lang.NullPointerException
            at Demo_Array_03.main(Demo_Array_03.java:17)
            
            /* 角标越界异常
            Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
        at Demo_Array_03.main(Demo_Array_03.java:25)
    2.对数组的常见操作
        2.1 遍历
            循环获取数组中的所有数据 --->遍历
            
            循环初始化变量 是数组的角标
            数组长度获取: 数组名.length 获取当前数组的长度
            最大角标的获取: 数组名.length - 1
        2.2 获取最值
        2.3 反转
        2.4 根据角标查询元素
        2.5 根据元素查询角标
            顺序查找
    3.算法
        排序:
            也是比较 但是和求最值有些不同
        3.1 选择排序
            原理:
                选择一个位置 拿这个位置上的值 不断和其他位置的值进行比较
                将值最小的元素交换至左侧
                每一轮比较的次数 比上一轮都少一次
                经过第一轮的比较 最小值 先出现在左侧
                    以此类推
        3.2 冒泡排序
            原理:
                相邻的两个元素之间进行两两比较 大的先出现在右侧(升序角度)
        3.3 二分查表法
            折半查找
            和顺序查找一样 功能都是根据元素查找角标
            根据元素 查找元素在当前数组中第一次出现的位置
            找到了 返回对应索引
            找不到 返回-1

            前提: 必须是有序数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值