一、数组基本概念
数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。
特点:
1. 数组中存放的元素其类型相同
2. 数组的空间是连在一起的
3. 每个空间有自己的编号,其实位置的编号为0,即数组的下标。
二、数组的创建及初始化
2.1 数组创建
T[] 数组名 = new T[N];
T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度
int[] array1 = new int[10]; // 创建一个可以容纳10个int类型元素的数组 double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组 String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组
2.2 数组初始化
数组的初始化主要分为动态初始化以及静态初始化。
1. 动态初始化:在创建数组时,直接指定数组中元素的个数
int[] array = new int[10]
2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9}; double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0}; String[] array3 = new String[]{"hell", "Java", "!!!"};
注意事项
静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
静态初始化时, {}中数据类型必须与[]前数据类型一致。
静态初始化可以简写,省去后面的new T[]。
// 注意:虽然省去了new T[], 但是编译器编译代码时还是会还原 int[] array1 = {0,1,2,3,4,5,6,7,8,9}; double[] array2 = {1.0, 2.0, 3.0, 4.0, 5.0}; String[] array3 = {"hell", "Java", "!!!"};
数组也可以按照如下C语言个数创建,不推荐
/* 该种定义方式不太友好,容易造成数组的类型就是int的误解 []如果在类型之后,就表示数组类型,因此int[]结合在一块写意思更清晰 */ int arr[] = {1, 2, 3};
如果不确定数组当中内容时,使用动态初始化,否则建议使用静态态初始化。
静态和动态初始化也可以分为两步,但是省略格式不可以。
如果没有对数组进行初始化,数组中元素有其默认值 如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值
如果数组中存储元素类型为引用类型,默认值为null
三、数组使用
3.1 元素访问
数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过 下标访问其任意位置的元素。
int[]array = new int[]{10, 20, 30, 40, 50}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4]); // 也可以通过[]对数组中的元素进行修改 array[0] = 100; System.out.println(array[0]);
注意事项
1. 数组是一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素
2. 下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常。
3.2 遍历数组
所谓 "遍历" 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作
int[]array = new int[]{10, 20, 30, 40, 50}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4])
上述代码可以起到对数组中元素遍历的目的,但问题是:
1. 如果数组中增加了一个元素,就需要增加一条打印语句
2. 如果输入中有100个元素,就需要写100个打印语句
3. 如果现在要把打印修改为给数组中每个元素加1,修改起来非常麻烦。 通过观察代码可以发现,对数组中每个元素的操作都是相同的,则可以使用循环来进行打印。
注意:在数组中可以通过 数组对象.length来获取数组的长度
我们可采取以下两种方式来打印数组:
法一:
int[]array = new int[]{10, 20, 30, 40, 50}; for(int i = 0; i < array.length; i++){ System.out.println(array[i]); }
法二:
int[] array = {1, 2, 3}; for (int x : array) { System.out.println(x); }
for-each 是 for 循环的另外一种使用方式。 能够更方便的完成对数组的遍历.。可以避免循环条件和更新语句写错。
完!