zoukankan      html  css  js  c++  java
  • 看透内存中的数组

    一 数组在內存中的存储方式
    看待一个数组时,一定要把数组看成两个部分:一部分是数组引用,也就是在代码中定义的数组引用变量,它存储在内存的栈部分,另一部分是实际的数组对象,这部分存储在內存的堆部分,通常无法直接访问它,只能通过数组引用变量来访问,下图清晰的描述了数组在内存中的存储示意图。


     
    二数组应用举例
    1代码示例

    public class ArrayInRam
    {
    	public static void main(String[] args)
    	{
    		// 定义并初始化数组,使用静态初始化
    		int[] a = {5, 7 , 20};
    		// 定义并初始化数组,使用动态初始化
    		int[] b = new int[4];
    		// 输出b数组的长度
    		System.out.println("b数组的长度为:" + b.length);
    		// 循环输出a数组的元素
    		for (int i = 0 ,len = a.length; i < len ; i++ )
    		{
    			System.out.println(a[i]);
    		}
    		// 循环输出b数组的元素
    		for (int i = 0 , len = b.length; i < len ; i++ )
    		{
    			System.out.println(b[i]);
    		}
    		// 因为a是int[]类型,b也是int[]类型,所以可以将a的值赋给b。
    		// 也就是让b引用指向a引用指向的数组
    		b = a;
    		// 再次输出b数组的长度
    		System.out.println("b数组的长度为:" + b.length);
    	}
    }

     
    2 运行结果

    5
    7
    20
    0
    0
    0
    0
    b数组的长度为:3
    3结果分析
     

      


     

    图一是b=a前,数组在內存中的表示。
    图二是b=a后,数组在內存中的表示。
    针对原来的b数组,因为它失去了引用数组,会变成垃圾,等待垃圾回收杌制回收它。

  • 相关阅读:
    科学美国人(Scientific American)部分段落小译
    Matlab安装使用libsvm
    【转】Matlab中特殊符号的写法
    计算机视觉资源
    AdaBoost
    AdaBoost人脸检测原理
    NLP常用开源/免费工具(转)
    搜索背后的奥秘——浅谈语义主题计算
    求数组当中子数组最大和
    求二叉树中两个节点的最低父节点
  • 原文地址:https://www.cnblogs.com/ainima/p/6331694.html
Copyright © 2011-2022 走看看