2021-07-20
一、数组
1、一维数组
数组元素类型 数组名[]; 数组元素类型 []数组名; char s[]; char[]s; //s的每个元素类型都是char类型的 Point points[]; Point[] points;// points的每个元素都是类Point类型的 Car Car[]; Car[] Cars[];//Cars的每个元素都是Car类型的
那么当数组开辟空间之后,就可以采用如下的方式的操作:
数组的访问通过索引完成,即:“数组名称[索引]”,但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,
例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,
会产生java.lang.ArrayIndexOutOfBoundsException 异常信息;
当我们数组采用动态初始化开辟空间后,数组里面的每一个元素都是该数组对应数据类型的默认值;
数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,数组是一个有限的数据集合,所以应该使用 for 循环。
在 Java 中提供有一种动态取得数组长度的方式:数组名称.length;
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
数组本身除了声明并开辟空间之外还有另外一种开辟模式。
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
但是千万要记住,数组属于引用数据类型,所以在数组使用之前一定要开辟控件(实例化),如果使用了没有开辟空间的数组,则一定会出现 NullPointerException
异常信息:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
在之前所进行的数组定义都有一个明显特点:数组先开辟内存空间,而后再使用索引进行内容的设置
实际上这种做法都叫做动态初始化,而如果希望数组在定义的时候可以同时出现设置内容,那么就可以采用静态初始化完成。
public class ArrayDemo { public static void main(String args[]) { int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444}; for(int i = 0; i < data.length; i++) { System.out.println(data[i]); } } }
在开发之中,对于静态数组的初始化强烈建议使用完整语法模式,这样可以轻松地使用匿名数组这一概念。
public class ArrayDemo { public static void main(String args[]) { System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length); } }
2、二维数组
对二维数组的定义有两种声明形式:
数组的动态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数];
数组的静态初始化:数据类型 对象数组[][] = new 数据类型[行个数][列个数]{{值, 值,…}, {值, 值,…},…};
数组的数组就是二维数组。
public class ArrayDemo { public static void main(String args[]) { //此时的数组并不是一个等列数组 int data[][] = new int[][] { {1, 2, 3}, {4, 5}, {6, 7, 8, 9}}; //如果在进行输出的时候一定要使用双重循环, //外部的循环控制输出的行数,而内部的循环控制输出列数 for(int i = 0; i < data.length; i++) { for(int j = 0; j < data[i].length; j++) { System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、"); } System.out.println(); } } }