特征

(1)数组元素的类型是唯一的,一个数组只能存储一种数据类型的数据。
(2)数组的长度是固定的,一旦数组初始化完成,数组所占有的内存空间将被固定。数组长度不可以改变。
(3)数组元素的类型既可以是基本类型 也是存储引用类型。

声明

  1. 数据类型[] 数组变量名
  2. 数据类型 数组变量名 []

Java是面向对象的语言,数据类型[]可以看成是一个整体类型,即数组类型,上面第二种是C语言数组的声明方式。
因此一般推荐第一种写法,如下:

  1. int[] intArr;
  2. String[] stringArr;

初始化

数组初始化的过程就是为数组的元素分配内存空间,并且为每个元素赋初始值

动态初始化

动态初始化使用new运算符分配指定长度的内存空间,只指定长度,由系统给出初始化值,注意必须指定数组的长度值

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

eg

  1. int[] intArr = new int[2];
  2. intArr[0] = 1;
  3. intArr[1] = 2;
  4. String[] stringArr = new String[3];
  5. stringArr[0] = "Hello world";
  6. stringArr[1] = "Hello Java";
  7. stringArr[2] = "Hello Python";

静态初始化

  1. 类型[] 数组名称 = new 类型[]{元素,元素,....}
  2. 类型[] 数组名 = {元素,元素,....}

给出初始化值,不需要指定数组的长度,根据初始值的个数决定长度.

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

数组的初始化具体示例用法

  1. public class Main {
  2. public static void main(String[] args){
  3. int [] arr = new int[10];// 声明数组
  4. for(int i =0;i<arr.length;i++){
  5. arr[i]=i;
  6. }
  7. int []numbers = new int[]{100,90,80};
  8. for(int i =0;i<numbers.length;i++){
  9. System.out.println(numbers[i]);
  10. }
  11. for(int num :numbers){
  12. System.out.println(num);
  13. }
  14. }
  15. }

数组异常

越界

每个数组的索引都有一个范围,即0——length-1,在访问数组的元素,不能超过数组范围,否则引起ArrayIndexOutOfBoundsException

  1. public static void main(String[] args) {
  2. int [] arr ={1,2,3,4};
  3. System.out.println(arr[4]);
  4. }

空指针

使用变量引用一个数组的时候,必须执行一个有效的数组对象,如果该变量值为null,则意味没有指向任何数组,此时通过变量名称访问数组元素会出现空指针异常NullPointerException

  1. public static void main(String[] args) {
  2. int [] arr ={1,2,3,4};
  3. System.out.println(arr[0]);
  4. arr = null;
  5. System.out.println(arr[0]);
  6. }