一、数组的概念
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
- 数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量
二、一维数组
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
静态初始化:在定义数组的同时就为数组元素分配空间并赋值
注意:数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化
数组一旦初始化,其长度是不可变的
package com.yyx.pratice; public class JavaPratice { public static void main(String[] args) { /* * 对于基本数据类型byte short int long * 而言:创建数组后,默认值为0 */ byte[] byteArr=new byte[2]; byteArr[0]=1; for(byte b:byteArr) { System.out.print(b+" "); } System.out.println(); /* * 对于基本数据类型float double * 而言:默认值为0.0 */ float[] floatArr=new float[2]; floatArr[0]=2.1f; for(float f:floatArr) { System.out.print(f+" "); } System.out.println(); /* * 对于基本数据类型char而言:其默认值为空格 */ char[] charArr=new char[2]; charArr[0]=‘a‘; for(char c:charArr) { System.out.print(c+" "); } System.out.println(); /* * 对于基本数据类型boolean而言,创建数组后,其默认值为false */ boolean[] booleanArr=new boolean[2]; for(boolean c:booleanArr) { System.out.print(c+" "); } System.out.println(); /* * 对于引用类型的变量构成的数组而言:其默认值为null */ String[] strArr=new String[2]; for(String str:strArr) { System.out.print(str+" "); } } }
三、二维数组
package com.yyx.pratice; public class JavaPratice { public static void main(String[] args) { /* * 一维数组初始化 */ int[] arr1 = { 13, 35, 56 }; int[] arr2 = new int[] { 3, 5, 8 };// 静态初始化 int[] arr3 = new int[3]; arr3[0] = 6;// 动态初始化 arr3[1] = 9; arr3[2] = 12; /* * 二维数组初始化 */ String[][] str1 = { { "Jack", "Tom" }, { "Lucy", "Jerry" } }; String[][] str2 = new String[][] { { "Jack", "Tom" }, { "Lucy", "Jerry" } };// 静态初始化 String[][] str3 = new String[2][2]; str3[0][0] = "Jack"; str3[0][1] = "Tom"; str3[1][0] = "Lucy"; str3[1][1] = "Jerry"; for (int i = 0; i < str3.length; i++) { //控制行数 for (int j = 0; j < str3[i].length; j++) { //控制列数 System.out.print(str3[i][j] + " "); } } } }
四、数组在内存中的分配
五、数组的常见异常
- 空指针异常 NullPointerException
- 索引越界异常 ArrayIndexOutOfBoundsException
package com.yyx.pratice; public class JavaPratice { public static void main(String[] args) { /* * 空指针异常 */ //第一种 try { boolean[] booleanArr=new boolean[3]; booleanArr=null; System.out.println(booleanArr[0]); } catch (Exception e) { e.printStackTrace(); } //第二种 try { String[] strArr=new String[3]; System.out.println(strArr[0].toString()); } catch (Exception e) { e.printStackTrace(); } //第三种 try { int[][] intArr=new int[3][]; System.out.println(intArr[2][0]); } catch (Exception e) { e.printStackTrace(); } /* * 索引值越界 */ try { int[] arr=new int[3]; arr[4]=0; } catch (Exception e) { e.printStackTrace(); } } }
六、操作数组的工具类Arrays