1.数组的概述
- 多个数据的组合。
- 是程序中的容器:数组、集合框架(List、Set、Map)
- 数组存储的数据的特点:依次紧密排列的、有序的、可以重复的
- 此时的数组、集合框架都是在内存中对多个数据的存储。
- 数组的其它特点:一旦初始化,其长度就是确定的、不可更改的
2.一维数组的使用(重要)
>数组的声明和初始化 int[] arr = new int[0]; String[] arr = new String[]{"1","2"} >调用数组的指定元素:使用角标、索引、index index从0开始 >数组的属性:length,表示数组的长度 >数组的遍历 >数组元素的默认初始化值 >一维数组的内存解析(难): 前提:在main()中声明变量:int[] arr = new int[]{1,2,3}; 虚拟机栈:main()作为一个栈帧,压入栈空间中。在main()栈帧中,存储着arr变量。arr记录着数组实体的首地址值。 堆:数组实体存储在堆空间中。
3.二维数组的使用
一维数组的元素是一个一维数组,则构成了二维数组
4.数组的常用算法(重要)
数组特征值的计算:最大值、最小值、总和、平均值等
数组的元素赋值。例如:杨辉三角;回型数
数组的赋值、复制
数组的反转
数组的扩容、缩容
数组的查找:
线性查找
二分法查找(前提:数组有序)
数组的排序:
冒泡排序:最简单
快速排序:最常用
5.Arrays工具类的使用
熟悉内部的常用方法:
toString()等
6.数组中的常见异常
数组下标越界
空指针
题目:
Q1.数组有没有length()这个方法?String有没有length()这个方法?
A:数组没有length(),是length属性。String有length()
Q2:有数组int[] arr,用java代码将数组元素顺序颠倒
A:LUE
Q3:为什么数组要从0开始编号,而不是1
A:数组索引代表的是数组元素距离首地址的偏移量。因为第一个元素与首地址形同,所以偏移量是0
Q4:数组有什么排序的方式,手写一下
A:冒泡。
Q5:常见的排序算法,快排过程,时间复杂度?
A: 十大排序算法 ,LUE ,O(nlogn)
Q6:二分算法实现数组的查找
A:LUE
Q7:怎么求数组的最大子序列和
A:LUE