1.常见概念:数组名、下标(或索引)、元素和数组的长度
2.数组的声明
3.初始化
有静态和动态初始化两种情况:
public static void main(String[] args) { // 动态初始化,数组的声明与赋值是分开的 // 声明数组 int [] a; a = new int[5]; for(int i = 0;i < a.length;i++) { // 为数组赋值 a[i] = i * i; System.out.println(a[i]); } // 静态初始化 :在定义数组的同时就为数组元素分配空间并赋值。 // 声明数组 int [] b = new int[] {1,2,3}; for(int j = 0;j < b.length;j++) { System.out.println(b[j]); } }
4.数组元素的默认初始化值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。实例代码如下:
public static void main(String[] args) { // 默认的初始化值 int[] a = new int[3]; String[] s = new String[3]; // 输出0 System.out.println(a[1]); // 输出null System.out.println(s[1]); }
存储及初始化的情况如下:
赋值之后就变成这样了:
5.内存解析
6.实例
不同数组在内存中的情况:
public static void main(String[] args) { // 声明了三个数组,a为初始数组,b是a的引用,两则的地址是一样的;c是新开辟的一块堆地址 int[] a = {1,2,3}; int[] b = a; int[] c = new int[3]; for(int i = 0;i < a.length;i++ ) { c[i] = a[i]; } // 改变a[0]的值,则b[0]改变,但是c[0]不变 a[0] = 0; for(int i = 0;i < a.length;i++ ) { System.out.println("a[0] = " + a[0]); System.out.println("b[0] = " + b[0]); System.out.println("c[0] = " + c[0]); } }
编译结果如下: