课程咨询 :186-8884-0703
咨询QQ:1615412715

深圳Java培训 > 达内新闻 > 【达内JAVA教程】如何把Java数组存放在内存中
  • 【达内JAVA教程】如何把Java数组存放在内存中

    发布:达内      来源:达内      时间:2016-06-21

  • 对于很多初学者或者入门不久的java开发人员来说,如何把Java数组存放在内存中成了一个大的问题,今天,深圳java培训(sz.java.tedu.cn)专家和大家共同学习一下:

    Java中有两种类型的数组:

    • 基本数据类型数组;

    • 对象数组;

    当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的,因为数组也是一个对象;

    一维数组

    int[] arr = new int[3];

    在以上代码中,arr变量存放了数组对象的引用;如果你创建了空间大小为10的整形数组,情况是一样的,一个数组对象所占的空间在堆上被分配,然后返回其引用;

    一维数组

    二维数组

    那么二维数组是如何存储的呢?事实上,在Java中只有一维数组,二维数组是一个存放了数组的数组,如下代码及示意图:

    int[ ][ ] arr = new int[3][ ];

    arr[0] = new int[3];

    arr[1] = new int[5];

    arr[2] = new int[4];

    二维数组

    对于多维数组来说,道理是一样的;

    数组对象及其引用存放在内存中的哪里?

    在Java中,数组同样是一个对象,所以对象在内存中如何存放同样适用于数组;

    正如我们都知道的,java运行时数据区包括堆,JVM栈和其它。如下代码是一个小例子,那么就让我们来看看数组和它的引用在内存中是如何存放的.

    class A {    int x;    int y;

    }

    ...public void m1() {    int i = 0;

        m2();

    }public void m2() {

         A a = new A();

    }

    ...

    如上代码,让我们来调用方法m1,看看发生了什么:

    当m1被调用的时候,栈帧Frame-1被创建并push到栈中,同时局部变量i也在栈帧Frame-1内创建。

    然后,m2方法在m1方法内部被调用,栈帧Frame-2被创建并push到栈中,在m2方法中,一个新的对象A在堆中被创建,而它的引用则被put到栈帧Frame-2里;

    现在内存中堆和栈的大致情况如下图:

    内存中堆和栈

    数组同样是对象,所以数组和对象以及引用在内存中的分布如上所示。

    如果你还有这些疑问欢迎咨询深圳java培训(sz.java.tedu.cn)专家。
    如果想学习的同学可以参加深圳达内JAVA培训,免费试听,或周末免费参加深圳JAVA培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 JAVA培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。

上一篇:【达内职场秀】java开发工程师薪水多少合适?

下一篇:达内教育受邀出席第十四届中国国际软交会

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:4月28日

Java--零基础周末班

Java--零基础周末班

开班日期:4月28日

Java--大数据全日制班

Java--大数据全日制班

开班日期:4月28日

Java--大数据周末班

Java--大数据周末班

开班日期:4月28日

  • 地址:深圳市宝安区共乐路西乡商会大厦10楼——深圳JAVA培训中心宝安校区
    深圳市龙岗区横岗力嘉路2013文化创客园A栋——深圳JAVA培训中心龙岗校区
  • 课程培训电话:186-8884-0703
    咨询QQ:1615412715 全国免费咨询热线:400-111-8989
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56