栈的划分、数组的内存图
栈的划分
java走中存心需要划分为5个部分:
1栈(Stack):存放的方法都是局部变量,真正方法运行都是在栈当中
局部变量:方法的参数,或者是方法{}内部的变量
特点:有作用域:一旦超出作用域,立即从栈内存中消失
堆(Heap):凡是new出来的,都是在堆当中
对内存里面的东西都是有一个地址值:地址值是16进制的
堆内存的数据都是有默认值的
整数:默认为0
浮点数:默认为0.0
字符: 默认为'\u0000'
布尔:默认为false
引用类型:默认为null
方法区(Method Area): 存储 .class 相关信息,包方法的信息
本地方法栈(Native Method Stack):与操作系统相关
寄存器(pc Register):与CPU相关
数组的内存图
首先我们创建两个动态数组,然后分别打印输出。在第二个值的时候赋值
public class array1 {
public static void main(String[] args) {
int[] ints = new int[5];
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
System.out.println("=============");
int[] ints1 = new int[5];
System.out.println(ints1[0]);
System.out.println(ints1[1]=10);
System.out.println(ints1[2]=20);
}
}
那么画一个图来看一下,数组的内存图
我们画了以一个方法区和栈和堆 我们数组起的变量名字 会进栈
main方法会进方法区
在数组中存储中的数据 都是在 堆中