Java基础复习笔记 第05章:数组

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
    > 引用类型:null


1.2 动态初始化方式2:(比如:int[][] arr = new int[3][])
外层元素:null
内层元素:不存在。一旦调用会报异常(NullPointerException)

4. 数组的常用算法(熟练)

  • 算法常用操作1
1. 数值型数组特征值统计
这里的特征值涉及到:平均值、最大值、最小值、总和等

2. 数组元素的赋值(实际开发中,遇到的场景比较多)

3. 数组的复制、赋值

4. 数组的反转
  • 算法常用操作2
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.Arrays

2. 作用:
封装了针对数组的常用操作。比如:排序、二分查找、比较数组是否相等、遍历等。

3. 常用方法:
sort(int[] arr) / binarySearch(int[] arr,int target) / toString(int[] arr)

6. 小结:数组中的常见异常

1. 数组的使用中常见的异常小结
> ArrayIndexOutOfBoundsException:数组角标越界异常

> NullPointerException:空指针异常


2. 出现异常会怎样?如何处理?

> 一旦程序中出现异常,且没有处理的情况下,程序就终止执行。

> 目前大家编程时,如果出现上述异常。回来根据异常的提示,修改代码,确保后续运行不再出现。
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值