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数组,因为它失去了引用数组,会变成垃圾,等待垃圾回收杌制回收它。

  • 相关阅读:
    英语中容易混淆单词
    Centos7 中安装 Redis 6.0.6
    JAVA基础- 为啥 Integer 中100=100 为true 而200=200则为false
    Java面试BIO,NIO,AIO 的区别
    Maven 中 dependencyManagement 干嘛用的
    代理实现流程
    使用do...while的方法输入一个月中所有的周日
    JavaScript---while和do while的区别
    微信小程序和H5之间相互跳转
    微信小程序进入广告实现
  • 原文地址:https://www.cnblogs.com/ainima/p/6331694.html
Copyright © 2011-2022 走看看