目录
前言
数组在java编程语言中算是最重要的数据结构之一,作为java初学者,最先接触的也是数组,这足以看出学好数组的重要性,经过了一段时间学习数组的内容,本人对数组有了初步的认识,在这里写出了有关数组的浅薄理解。
一、数组的概念
数组(Array)是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
二、数组初始化
概述:Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组的两种常见初始化方式:1.动态初始化(指定长度) 2.静态初始化(指定内容)。
- 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值 格式: 数据类型[] 变量名= new 数据类型[数组长度]; eg:int[] arr = new int[3];
- 静态初始化:初始化指定每个数组元素的初始值,由系统决定数组长度 格式: 数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3,......} eg: int[] arr = new int[]{1,2,3}; 简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,......} eg: int[] arr = {1,2,3};
三、数组的访问
1.索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index)
,可以通过数组的索引访问到数组中的元素。
格式:
数组名[索引]
2.索引访问数组中的元素:
数组名[索引] = 数值,为数组中的元素赋值;
变量 = 数组名[索引],获取出数组中的元素。
public static void main(String[] args) {
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
//获取数组0索引上的元素
int i = arr[0];
System.out.println(i);
//直接输出数组0索引元素
System.out.println(arr[0]);
}
四、数组操作的两个常见问题
1.索引越界:访问了数组中不存在的索引对应元素,造成索引越界问题 (代码演示区出现:ArrayIndexOutofBoundsException)。
2.空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常(代码区出现:NullPointerException) ----> null:空值,引用数据类型的默认值,表示不指向任何有效对象。
五、数组常见操作
1.获取最值(最大值)
2.数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
for循环遍历方式:
六、数组排序
- 冒泡排序(相邻两个元素比较,较小值放前)
- 选择排序(默认开始第一个为最小值,和后面值依次比较,较小值放前)
- 插入排序
// 冒泡排序 稳定 public static void buddleSort(int[] arr) { int temp; for (int i = arr.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j+ 1]; arr[j+1] = temp; } } } } // 选择排序 不稳定 public static void choiceSort(int[] arr) { for (int i = 1; i < arr.length; i++) { int k = 0, j; for (j = 0; j <= arr.length - i; j ++) { if (arr[k] < arr[j]){ k = j;} } if (k != j) { int temp = arr[k]; arr[k] = arr[j-1]; arr[j-1] = temp; } } } // 直接插入排序 稳定 public static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { int temp = arr[i], j; for (j = i - 1; j >= 0; j--) { if (arr[j] > temp) { arr[j+1] = arr[j]; } else { break; } } arr[j+1] = temp; } }