1. 数组的概述(理解)
1. 数组的理解概念:
数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,
并通过编号的方式对这些数据进行统一管理。简称:多个相同类型的数据的组合Java中的容器:数组、集合框架(用于存储不同特点的多个数据)2. 几个相关的概念
> 数组名(即为容器的名称)
> 元素 (即为数组中具体的一个个的数据)
> 数组的长度(容器中元素的个数)
> 数组的角标、下标、下角标、索引、index (即为数组中元素的具体位置。从0开始)3. 数组的特点:
- 数组本身是`引用数据类型`,而数组中的元素可以是`任何数据类型`,包括基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块`连续的空间`。占据的空间的大小,取决于数组的长度和数组中元素的类型。
- 数组中的元素在内存中是依次紧密排列的,有序的。
- 数组,一旦初始化完成,其长度就是确定的。
- 数组的`长度一旦确定,就不能修改`。
- 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
- 数组名中引用的是这块连续空间的首地址。4. 复习:变量按照数据类型的分类
4.1 基本数据类型:byte \ short \ int \ long ;float \ double ;char ;boolean
4.2 引用数据类型:类、数组、接口; 枚举类型、注解类型、记录类型(Record)5. 数组的分类
5.1 按照元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
5.2 按照数组的维数来分:一维数组、二维数组、....
2. 一维数组的使用(重点)
(6个基本点)
> 数组的定义:静态初始化、动态初始化
> 数组元素的表示:使用角标,角标从0开始,到数组的长度-1结束。
> 数组的长度:length
> 遍历数组:for循环
> 数组元素的默认值:记住。后续类中属性的默认值也如此。
> 数组的内存解析(难点)---> 具体图示见chapter06章节的module中即可。
3. 二维数组的使用(熟悉)
> 角度1:一个一维数组又作为了另一个数组arr的元素。则数组arr就称为二维数组。
> 角度2:一个数组arr1的元素,仍是是一个数组,则arr1称为二维数组> 数组,属于引用数据类型;数组的元素也可以是引用数据类型。--> 数组的元素,还可以是数组。> 说明:其实Java中不存在二维、三维、..数组,只是将一个上述的arr或arr1称为是二维数组。> 区分:外层元素、内层元素
二维数组的使用(6个基本点)
> 数组的定义
> 数组元素的调用
> 数组的长度
> 数组的遍历
> 数组元素的默认初始化值(稍难)
> 数组的内存解析(难点)---> 具体图示见chapter06章节的module中即可。
1. 二维数组元素的默认初始化值
1.1 动态初始化方式1:(比如:int[][] arr = new int[3][4])外层元素:存储的是地址值。(具体来说,就是外层元素指向的一维数组的地址值)内层元素:与一维数组元素的默认值相同。> 整型:0> 浮点型:0.0> 字符型:0 或 '\u0000'> 布尔型:false> 引用类型:null1.2 动态初始化方式2:(比如:int[][] arr = new int[3][])
外层元素:null
内层元素:不存在。一旦调用会报异常(NullPointerException)
4. 数组的常用算法(熟练)
1. 数值型数组特征值统计
这里的特征值涉及到:平均值、最大值、最小值、总和等2. 数组元素的赋值(实际开发中,遇到的场景比较多)3. 数组的复制、赋值4. 数组的反转
1. 数组的扩容与缩容2. 数组元素的查找(或搜索)
顺序查找:> 优点:简单,好理解,数组没有任何的前提限制。(比如:有序)> 缺点:相较于二分法查找更慢一些。二分法查找:> 优点:相较于顺序查找,更快。O(logN)> 缺点:必须此数组有序。3. 排序算法
3.1 排序算法的衡量标准:
> 时间复杂度:更为关心的标准。Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)<O(n^n)。
> 空间复杂度:常出现以空间换时间的做法。> 稳定性3.2 排序的分类:内部排序、外部排序内部排序的具体算法:十种。我们需要关注的几个排序算法:
> 冒泡排序:简单、容易实现;企业笔试中容易考。时间复杂度:O(n^2)。要求大家可以手写。
> 快速排序:快速、开发中需要排序情况下的首选。时间复杂度:O(nlogn)。要求大家至少可以说明其实现思路。
5. Arrays:数组的工具类(熟悉)
1. Arrays类所在位置
java.util.Arrays2. 作用:
封装了针对数组的常用操作。比如:排序、二分查找、比较数组是否相等、遍历等。3. 常用方法:
sort(int[] arr) / binarySearch(int[] arr,int target) / toString(int[] arr)
6. 小结:数组中的常见异常
1. 数组的使用中常见的异常小结
> ArrayIndexOutOfBoundsException:数组角标越界异常> NullPointerException:空指针异常2. 出现异常会怎样?如何处理?> 一旦程序中出现异常,且没有处理的情况下,程序就终止执行。> 目前大家编程时,如果出现上述异常。回来根据异常的提示,修改代码,确保后续运行不再出现。