1.错误的声明数组的方式,声明数组的时候不能指定其大小:
int [5] sparseArray;
int sparseArray[5];
注:
Java语言中声明数组时不能指定其长度(数组中元素的个数)
因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。
2.错误的初始化数组的方式
int arr[] = new int[3]{1,2,3};// 错误写法:静态初始化不能指定元素个数
int arr[] = new int[]; // 错误写法:动态初始化必须指定元素个数
注:静态初始化时不能指定元素个数,而动态初始化时则必须指定元素个数。静态初始化时数组能够知道元素的个数所以不需要指定,而动态初始化时数组元素个数未知因此必须指定。
3.定义数组三种格式:
int[] arr = new int[5]; // 初始化为null
int arr[] = new int[5]; //不推荐,可读性差
int[] arr = new int[]{1,2,3,4,5} //已赋值(初始化)
int[] arr = {1,2,3,4,5} //已赋值(初始化)
附:一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。
注:由于定义数组仅仅只是定一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。
4.数组的初始化分为静态初始化、动态初始化和默认初始化:
1.静态初始化是数组在初始化时由程序员显式指定每个数组元素的初始值而数组长度由系统决定
例如:int[] arr = new int[]{1,2,3};
int[] arr = {1,2,3};
2.动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值
例如: int[] arr = new int[3];
3. 默认初始化:数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
例如: int[] arr=new int[2];//默认值0,0
boolean[] arr =new boolean[2];//默认值 false,false
注:不要静态初始化和动态初始化同时使用,也就是说不要再进行数组初始化时,既指定数组长度,也为每个数组元素分配初始值。