数组的概述
(1)数组是存储多个变量(元素)的东西(容器)
(2)数组中的多个变量的数据类型要一致
定义数组要么动态初始化,指定长度,要么静态初始化指定数组元素!
数组的初始化
1)动态初始化: 给数组指定长度,数组中的元素值由系统默认给定
2)静态初始化: 给定数组中元素的值,数组的长度由系统给定;
2)静态初始化: 给定数组中元素的值,数组的长度由系统给定;
静态初始化
原始格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
简写方式:
数据类型[] 数组名称= {元素1,元素2,元素3..} ;
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度] ;
举例:
int[] arr = new int[3] ;
int[] arr = new int[3] ;
数组中的异常
数组中经常会出现的异常:
ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的索引值;
解决方案:观察数组中到底有索引值到多少; 数组长度-1
NullPointerException:空指针异常 (在实际开发中该异常是最多的)
出现的原因:对象为null,而开发者还要去使用对象,就会出现问题
ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的索引值;
解决方案:观察数组中到底有索引值到多少; 数组长度-1
NullPointerException:空指针异常 (在实际开发中该异常是最多的)
出现的原因:对象为null,而开发者还要去使用对象,就会出现问题
解决方案:给某个对象进行非空判断,防止程序程序空指针异常
一些常用的数组操作:
遍历数组:
public static void printArray2(int[] arr) { //左中括号 System.out.print("["); for(int x = 0 ; x < arr.length ; x ++) { //判断当前x是否是最后一个索引 if(x==arr.length-1) {//如果是最后一个索引的对应的元素 System.out.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } }
求最大值:
public static int max(int[] arr) { //定义参照物 int max = arr[0] ; //遍历其他元素 for(int x = 1 ; x < arr.length ; x ++) { //获取到每一个元素,分别和参照物进行比较,如果大了,就作为最大值进行继续比较 if(arr[x] > max) { max = arr[x] ; } } return max ; }
元素逆序:
public static void reverse(int[] arr) { for(int start = 0,end = arr.length-1 ; start<=end ;start++,end --) { //temp中间变量 int temp = arr[start] ; arr[start] = arr[end] ; arr[end] = temp ; } }
元素索引:(假设法)
public static int getIndex(int[] arr,int value) { //如果没有找到这个元素,假设找不到 int index = -1 ; //遍历数组 for(int x = 0 ; x < arr.length ; x ++) { //获取到每一个元素,如果找打,修改索引值 if(arr[x] == value) { //修改 index = x ; break ; } } return index ; }