一、数组的定义
当声明数组时,仅仅是给出了数组变量的名字和元素的数据类型,要想真正地使用数组还必须为它分配变量,即给数组分配元素。
例如:
// 声明数组与创建数组分开写
// 声明数组
float[] arr;
// 创建数组
arr = new float[4];
也可以声明数组与创建数组一起完成
1.数据类型[] 数组名 = new 数据类型[数组长度]
2.数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…}
3.数据类型[] 数据名 = {元素1,元素2,…}
int[] arr1 = new int[5];
int[] arr2 = new int[]{1, 2, 3};
int[] arr3 = {6, 7, 8, 9};
使用方法一创建数组时必须给定数组的长度,且创建数组后长度不可变。
可以通过length获取数组的长度
System.out.println(arr1.length); // 5
System.out.println(arr2.length); // 3
System.out.println(arr3.length); // 4
二、数组的存储与取用
在java中,不能通过直接打印数组来获取元素(以int为例)(char数组例外),例如:
public static void main(String[] args) {
int[] arr = new int[5];
System.out.println(arr); // [I@1b6d3586
}
通过数组的下标实现存储数据与取用(以int型为例)
public static void main(String[] args) {
int[] arr = new int[5];
arr[0] = 6;
arr[1] = 9;
// 数组长度
System.out.println(arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 6 9 0 0 0
}
}
例子中数组arr前两个元素为6、9,后三个元素为0。
是因为创建数组时指定了数组的长度却没有给定初始值,所以系统会自动的给定初始值。并且对于不同类型的数组,给定的初始值也不同。
三、数组的默认值
1.基本数据类型的数组
byte 型数组元素的默认初始值为0
short 型数组元素的默认初始值为0
int 型数组元素的默认初始值为0
long 型数组元素的默认初始值为0L
float 型数组元素的默认初始值为0.0f
double 型数组元素的默认初始值为0.0d
char 型数组元素的默认初始值为字符\u0000(Unicode编码中\u0000代表的是空字符,属于控制字符,也叫不可显字符。这个空字符与空格不同,空格的编号是 \u0020)
boolean 型数组元素的默认初始值为false
2.引用类型的数组在创建之后,默认值null
public static void main(String[] args) {
byte[] b = new byte[1];
System.out.println(b[0]); //0
int[] i = new int[1];
System.out.println(i[0]); //0
short[] s = new short[1];
System.out.println(s[0]); //0
long[] l = new long[1];
System.out.println(l[0]); //0
float[] f = new float[1];
System.out.println(f[0]); //0.0
double[] d = new double[1];
System.out.println(d[0]); //0.0
char[] c = new char[1];
System.out.println(c[0]); //
boolean[] bo = new boolean[1];
System.out.println(bo[0]); //false
String[] st = new String[1];
System.out.println(st[0]); //null
}
四、数组的常见异常
1、ArrayIndexOutOfBoundsException 索引越界异常
访问不存在的索引值。
在arr数组中,数组的长度为5,索引值分别为0,1,2,3,4
没有索引值为5的元素,访问arr[5]就会报错
2、NullPointerException 空指针异常
数组arr没有任何指向,所以报错
public static void main(String[] args) {
int[] arr = new int[5];
arr[0] = 6;
arr[1] = 9;
System.out.println(arr[1]);
System.out.println(arr[5]); //ArrayIndexOutOfBoundsException 下标越界异常
arr = null;
System.out.println(arr[1]); //NullPointerException 空指针异常
五、二维数组
1、二维数组创建
1.数据类型[][] 数组名 = new 数据类型[二维数组中一维数组的个数][一维数组中元素的个数];
2.数据类型[][] 数组名 = new 数据类型[二维数组中一维数组的个数][];
3.数据类型[][] 数组名 = {{元素1,元素2,…},{元素1,元素2,…},…}
int[][] arr1 = new int[5][5];
int[][] arr2 = new int[5][];
int[][] arr3 = new int{{1,2},{3,4},{5,6}}
2、二维数组的取用
public static void main(String[] args) {
int[][] arr = {{1,2,3}, {4,5}, {5,6,7,8}};
System.out.println(arr); // [[I@1b6d3586
System.out.println(arr[0]); // [I@4554617c
System.out.println(arr[0][1]); // 2
// 遍历
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
// 换行
System.out.println();
}
}
六、数组的内存分析
java数组的内存分析:java数组的内存分析