数组

我们可以使用数组来保存同一个数据类型的多个数据

数组的特点

  1. ①数组的长度一旦确定就不能改变
  2. ②一个数组中元素的数据类型都是一样的

数组的初始化

动态初始化

格式

  1. 数据类型[] 数组名 = new 数据类型[长度];

例如:

  1. int[] arr = new int[10];//动态初始化了一个长度为10的数组,数组元素为int类型

静态初始化

格式

  1. 标准格式:
  2. 数据类型[] 数组名 = new 数据类型[] {元素值1,元素值2,元素值3,...};

例如:

  1. int[] arr = new int[]{1,2,3,4,5};
  1. 省略格式(推荐使用):
  2. 数据类型[] 数组名 = {元素值1,元素值2,元素值3,...};

例如:

  1. int[] arr = {1,2,3,4,5};

总结

  1. 静态初始化和动态初始化都可以实现对数组的初始化,那么我们在需要创建数组的时候应该如何选择呢?
  2. 如果数组元素都确定好了,并且个数有限的情况下我们可以使用静态初始化,因为更方便。如果只能确定数组的长度,数组的元素值需要后面再赋值的话可以使用动态初始化。

数组元素的表示

格式

  1. 数组名[索引值]

例如:

  1. int[] arr = {1,2,3,4};
  2. //输出数组arr的第一个元素
  3. System.out.println(arr[0]);
  4. //把数组arr的第3个元素值修改为5
  5. arr[2] = 5;

注意

  1. 索引值就是一个int数字,代表数组当中元素的编号。
  2. 索引值从0开始,一直到“数组的长度-1”为止。例如长度为5的数组他的索引范围为04

数组的内存结构

观察下面代码的输出结果

  1. int[] arr = new int[5];
  2. arr[0] = 1;
  3. arr[1] = 2;
  4. int[] arr2 = arr;
  5. arr2[2] = 3;
  6. arr2[3] = 4;
  7. System.out.println(arr2[0]);
  8. System.out.println(arr[3]);

如果想要弄明白上面代码的输出结果就需要知道一个数组在内存中是如何存储的。

实际上,数组的实体保存在堆中,数组名实际保存的是数组实体的地址值。

数组长度

在java中我们可以非常方便的获取到数组的长度,格式如下:

  1. ** 数组名.length**

例如:

  1. int[] arr = {1,2,3,4};
  2. //输出数组长度
  3. System.out.println(arr.length);

数组的遍历

我们在操作数组的时候很多时候需要对数组的每个元素挨个操作一遍,这种情况下我们就可以对数组进行遍历操作。

  1. int[] arr={1,2,3,4,5,7};
  2. //遍历输出数组元素
  3. for(int i=0;i<arr.length;i++){
  4. System.out.println(arr[i]);
  5. }

常见问题

1.观察下面程序的执行结果 ArrayIndexOutOfBoundsException 数组索引越界

  1. int[] arr = new int[3];
  2. arr[1] = 1;
  3. arr[2] = 2;
  4. arr[3] = 3;
  5. System.out.println(arr[2]);