美文网首页从零学Java笔录
从零学java笔录-第23篇数组2java中内存分配及棧、堆的区

从零学java笔录-第23篇数组2java中内存分配及棧、堆的区

作者: 凯哥Java | 来源:发表于2017-07-04 12:25 被阅读1次

    本节主要内容:

    1:java中内存分配及棧、堆的区别

    2:本节总结&下节预告

    本文出处:《凯哥陪你学系列之java基础篇.Java基本语法篇》中第23篇 数组2 java中内存分配及棧、堆的区别

    java内存区域分类:

    1: 棧(需要掌握的)

    存储局部变量的

    局部变量;

    定义在方法声明上和方法中的变量。比如在main方法声明的int i =3;

    2:堆(需要掌握的)

    存储new出来的数组或是对象

    3:防范区

    面向对象部分讲解

    4:本地方法区

    和系统相关

    5:寄存器

    给CPU使用的

    解释:

    int [] arr = new int [5];这个在棧、堆中存储

    说明:

    棧的特点:先进后出。可以联想到弹夹中的子弹。

    弹夹中最先放进去的子弹,最后出枪膛。

    int [] arr = new int [5];这个在棧、堆中存储模型

    说明:

    根据棧的定义,我们可以知道main方法是局部的。

    所以main方法应该在棧中。

    而 int [] arr 是在main方法中。所以也在棧区域中。

    又因为,jvm最先找main方法。所以main方法被压棧,到棧区域最下面了。

    根据堆的定义,我们知道 new int[5] 这个应在堆区域中。

    对应的地址是0x0011 索引分别是 0 、1、2、....

    系统给定的默认初始值都是0

    在将堆中地址引用指向棧中。所以当我们打印出arr的时候,其实就是打印出,该

    数组在堆中的地址值。

    在回顾上节课:

    在syetem.out.println(arr)其实打印的就是其对应在内存中的地址。

    本节总结:

    通过本节学习,需要掌握的:

    1:堆、棧的区别及分别存放的是什么数据

    2:理解堆、棧在内存中的方式

    下节预告:

    一维数组在动态赋值在内存中图解。

    欢迎关注凯哥公众号:凯哥Java

    欢迎浏览凯哥个人网站:www.kaigejava.com (凯哥java的全拼。很好记哦~)

    相关文章

      网友评论

        本文标题:从零学java笔录-第23篇数组2java中内存分配及棧、堆的区

        本文链接:https://www.haomeiwen.com/subject/qvswcxtx.html