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]);
}
}编译结果如下:

京公网安备 11010502036488号