一、数组
数组是一组类型相同的数据的集合。
1.特性
Java数组是引用类型,但数组内可以装入基本数据类型,也可以装入引用数据类型。
数组与类,接口,注解,枚举并列,是引用数据类型中的一种。
Java中的数组一经定义以后就无法修改。
数组在内存中是连续分配的,所以读取速度快。
数组内有索引值,从0开始。
2.数组的维数
如果数组中的元素都是单个数据,那么称为一维数组。
如果一个数组中元素是一维数组,那么称为二维数组。
3.数组的声明
数组元素类型[] 变量名称; 数组元素类型 变量名称[];
1 int[] arr;
2 int arr[];
3 String[] arr;
4 String arr[];
4.初始化方式
数组中的元素如果为基本数据类型,默认值:整形为0,浮点型为0.0,字符型为u0000,布尔值为false
如果是引用数据类型,那么默认值为null
第一种方式:数组元素类型[] 变量名称 = new 数组元素类型[数组长度];
第二种方式:数组元素类型[] 变量名称 = new 数组元素类型{用逗号隔开元素的具体值};
第三种方式:数组元素类型[] 变量名称 = {用逗号隔开元素的具体值};
数组是引用类型,栈中arr中保存数组的首地址,指向堆中的数组的具体内容。
在创建数组时,一定要明确数组的长度。数组初始化的同时,也初始化在内存中;
6.数组的遍历(增强for循环)
for(数据类型 变量名:数组变量名){
这里的变量名就是每一次循环从数组中去除的值。
}
二、排序
1.选择排序
选择排序的主要思想是:找到未排序列表中的最小元素,加入有序列表的末尾,直到无序列表为空。
现在将数组分为有序和无序两个队列,在开始排序时,有序的数量为0,全部为无序队列。
以此类推:
2.冒泡排序
交换的轮式是外层循环,比较的次数就是内层循环
两层for循环,外层循环次数n-1,内层循环n-1-i,内层循环两两比较。
3.插入排序
选择排序和插入排序类似,将数组分为有序队列和无序队列,默认数组第一个为有序数组,其余为无序数组,从无序数组中选取第一个与有序数组中的值比较,插入到合适位置。
三. 多维数组
多维数组的声明: 数组元素类型[][] 变量名 = new 数组元素类型[一维长度][二维长度];
内存分析:
1 // 等长二维数组
2 int[][] arr = new int[3][3];
3
4 // 不等长二维数组
5 int[][] arr = new int[3][];
6
7 arr[0] = new int[2];
8 arr[1] = new int[3];
9 arr[2] = new int[4];