秦疆的JavaSE课程笔记:53 数组 三种初始化及内存分析
-
Java内存分析:
-
当声明数组
int[] array = null
时,只在栈中存在一个名为array的数组。当创建数组array = new int[3]
时,在堆中开辟了一个存在3个int数据的空间。当给元素赋值时,堆中的每一个int类型获得了一个自己的值。 -
“下标越界异常”报错
java.lang.ArrayIndexOutOfBoundsException
,简单来说就是,当数组只有3个元素时,却试图去取不存在的第4个元素。 -
数组的三种初始化状态:
1、静态初始化,创建+赋值
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,3)};
2、动态初始化,先创建,后赋值
int[] b = new int[2];
b[0] = 1;
b[1] = 2;
3、数组的默认初始化:数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。(也就是说,动态初始化第一步,其实已经默认初始化了)
public class ArrayDemo1 {
public static void main(String[] args) {
int[] c = new int[3];
System.out.println(c[0]);
System.out.println(c[1]);
System.out.println(c[2]);
}
}
====输出如下====
0
0
0 //数组c中的所有元素默认为int的默认值0