数组
一、一维数组
1.简介
1 .数组是一种数据结构,用于存储多个数据(必须是同一数据类型)
2 .每个数组元素存放一个数据
3 .通常通过数组元素的索引(下标)来访问数组元素(为数组元素赋值或取出数组元素的值)
2. 定义数组的语法
①数据类型 [] 数组名——更倾向于这种
②数据类型 数组名 []注意:定义数组的时候不能在[]中指定长度
3. 初始化
为数组开辟连续的内存空间,并为每个数组元素赋值
(1) 静态初始化
数组名=new 数据类型[]{元素1,元素2,元素3,元素4,……}
int[] arr;
arr = new int[]{11, 22, 33, 44, 55}
简写形式:数据类型 [] 数组名 = {元素1,元素2,元素3,元素4,……};
int[] arr = {11, 22, 33, 44, 55} ;
(2) 动态初始化
数组名=new 数据类型[数组长度]
int [] arr = new int[5];
注意:
①.不要同时使用静态初始化和动态初始化(不要在进行数组初始化时,既指定数组长度,又为每个数组元素分配初始值)
② 简写形式声明定义和赋值初始化必须同一行
4. 数组的访问
数组名[数组索引值]注意:索引值从0开始,0代表数组的第一位元素arr[0]
如果直接输出一个数组,得到的是数组的地址[I@19bb25a
[代表是数组,几个就代表几维
I代表是int类型
@是固定的
19bb25a代表的是数组的十六进制地址值(hashCode)
注意:
使用动态初始化时,系统会为数组元素分配初始值
数据类型 初始值
整数类型(byte、short、int、long) 0
浮点类型(float、double) 0.0
字符类型(char) ’\u0000’(空格)
布尔类型(boolean) false
引用数据类型(类、接口、数组、字符串) null
5.数组内存分布
动态初始化:
静态初始化:
6. 常见数组相关异常
(1) 数组索引越界异常(ArrayIndexOutOfBoundException)
int [] arr = new int[5];
System.out.println(arr[5]);
(2) 空指针异常(NullPointerException)
int [] arr = new int[5];
arr = null;
System.out.println(arr[0]);
###7. 数组的特点
(1) 一旦数组初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变(集合可变)
(2) 既可以存储基本数据类型的数据,也可以存储引用数据类型的数据,但保存的数据类型必须保持一致
(3) 数组也是一种数据类型,属于引用数据类型
###8. 数组的长度
数组名.length
数组通过length属性,String通过length()方法
###9. 数组的遍历
for(int i=0;i<数组名.length;i++){
System.out.println(数组名[i]);
}
###10. foreach循环
语法:for(数据类型 变量名:数组名或集合名){
//迭代访问每个元素
}
###11. 最值
1 | //数组中的最值问题 |
###12. 反转
1 | //反转整个数组 |
二、二维数组
可以理解为一种“特殊”的一维数组,每个数组空间中保存的是一个一维数组。
1. 二维数组的声明与空间分配
语法:
① 数据类型 [] [] 数组名 = new 数据类型 [二维数组的长度/包含的一维数组的个数] [每个一维数组的长度]
int [][] arr = new int[3][2];
//二维数组中有3个一维数组
//每个一维数组中有两个元素
② 数据类型 [] [] 数组名 = new 数据类型 [二维数组的长度/包含的一维数组的个数][]
int[][] arr = new int[3][];
③ 数据类型 [] [] 数组名 = { {元素},{元素1, 元素2},……}
int [][] arr = { {1,2,3},{4,5},{6,7,8,9} };
在某种记忆程度上可以理解成[行数][列数],但仅限记忆
2. 赋值与访问
与一维数组一样,数组下标从0开始,但需要记住必须先分配每个一维数组的长度才能进行赋值与访问
System.out.println(arr);//二维数组
System.out.println(arr[0]);//二维数组的第一个一维数组
System.out.println(arr[0][0]);//二维数组的第一个一维数组的第一个元素

3. 二维数组的遍历
1 | int[][] arr = { {1,2,3},{4,5},{6,7,8} }; |
三、 Java 8增强的工具类 :Arrays
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
给数组赋值:通过 fill()方法。
对数组排序:通过 sort()方法,按升序。
比较数组:通过 equals()方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch()方法能对排序好的数组进行二分查找法操作。
