秦疆的Java课程笔记:53 数组 三种初始化及内存分析

发布时间 2023-12-04 16:48:43作者: Acolyte_9527
  • 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