03:三种初始化以及内存分析
内存分析
-
java内存分析:
java内存分为三种:
- 堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会被存放到别的对象和引用
- 栈
- 存放基本类型(会包含这个基本类型的具体数值)
- 引用对象的变量(会存放这个引用在堆里的具体地址)
- 方法区
- 可以被所有的线程共享
- 包含了所有的class和static变量
- 堆
重点:
-
声明数值是的值存放在栈中
-
创建数组需要new(新建)一个数组,也就符合了堆的要求,也就是说创建的数组存放堆中
-
创建成功后栈会在堆中开拓一个空间,也就是数组数值的存放
-
给数组赋值也就是在栈在堆中开拓的空间赋值
-
当获取已经超过已创建的下标的元素时,将会有一个重要的报错。
![]()
ArrayIndex0out0fBoundsExamption:下标越界!
-
这个的原因是获取已经超过已创建的下标的元素,也就是栈在堆中开拓的空间中,没有这个数值!
三种初始化
静态初始化
-
直接定义数组元素
//静态初始化:创建 + 赋值 int[] i = {1,2,3,4,5}; //用花括号括起来,括号内直接赋给该数组类型的元素的数值,每个数值用逗号分隔/区分。 //定义之后数组内的数值就不可以改变了 System.out.println(i[2]); //方括号内的数字为数组的下标,对上初始化的值的第几位元素 //这为最基本的基本数组类型
动态初始化
//动态初始化:其中如果不手动赋值,将会默认为赋值的元素为0,这称为默认初始化
//声明+初始化
int[] j = new int[10];
//当定义一个j时,在栈会创建出一个独属于j的空间,
//在new一个数组时,就会在对中开拓一片空间,并且根据定义的下标为多少就创建多少个元素
j[0] = 10; //给下标为第0个的元素赋值
System.out.println(j[0]); //输出第0个元素的值
默认初始化
- 数组时引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照示例变量同样的方式被隐式初始化。

浙公网安备 33010602011771号