数组
1. 特点
- 数组是有序排列的
- 属于引用数据类型
- 创建数组对象会在内存中开辟一整块连续的空间
- 数组一旦初始化,长度就是确定的,也不可修改
2. 分类
- 一维、二维、、、
- 基本数据类型元素的数组、引用数据类型元素与的数组
3. 一维数组的使用
3.1 声明和初始化
- 只要初始化完成,其长度就确定了
// 静态初始化:数组的初始化和数组元素赋值操作同时进行
int[] ids = new int[] {
1001,1002,1003,1004
};
// 动态初始化,数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
// 类型推断
int arr4[] = {1,2,3,4};
3.2 默认初始化值
数据元素 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0.0 |
char | 0或‘\u0000’ |
boolean | false |
引用型 | null |
3.3 数组的内存解析
4. 二维数组的使用
4.1 理解
一维的数组的存储元素是引用类型,再者一维数组也是引用类型,故数组的元素也可以是引用类型数组。
4.2 获取长度
- 每一层.length获取一层的长度
4.3 默认初始化值
-
外层存储的是一维的地址值
-
内层默认为0/null,与一维数组初始化情况相同
int[][] arr = new int[2][2]; arr[1] // [I@454xc 一个[表示一维数组 I表示int类型 int[][] arr1 = new int[2][]; arr[2] // 空指针异常
4.4 内存解析
5. 数组的常见算法
5.1 数组元素的赋值(杨辉三角、回形数)
5.3 求数组型数组中元素的最大值、最小值、平均数、总和
5.4 数组的复制、反转、查找(线性查找、二分查找)
5.5 数组元素的排序算法
5.5.1 冒泡排序
int arr[] = {43,42,76,-98,0,364,45,10,-4165,12};
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if (arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}