zoukankan      html  css  js  c++  java
  • 四张內存变化图揭秘引用类型数组的初始化

    一代码示例

    class Person
    {
    	public int age; // 年龄
    	public double height; // 身高
    	// 定义一个info方法
    	public void info()
    	{
    		System.out.println("我的年龄是:" + age
    			+ ",我的身高是:" + height);
    	}
    }
    public class ReferenceArrayTest
    {
    	public static void main(String[] args)
    	{
    		// 定义一个students数组变量,其类型是Person[]
    		Person[] students;   //a
    		// 执行动态初始化
    		students = new Person[2];  //b
    		// 创建一个Person实例,并将这个Person实例赋给zhang变量
    		Person zhang = new Person();
    		// 为zhang所引用的Person对象的age、height赋值
    		zhang.age = 15;
    		zhang.height = 158;
    		// 创建一个Person实例,并将这个Person实例赋给lee变量
    		Person lee = new Person();
    		// 为lee所引用的Person对象的age、height赋值
    		lee.age = 20;
    		lee.height = 172;        //c
    		// 将zhang变量的值赋给第一个数组元素
    		students[0] = zhang;
    		// 将lee变量的值赋给第二个数组元素
    		students[1] = lee;          //d
    		// 下面两行代码的结果完全一样,因为lee
    		// 和students[1]指向的是同一个Person实例。
    		lee.info();
    		students[1].info();
    	}
    }

    二运行结果
    我的年龄是:20,我的身高是:172.0
    我的年龄是:20,我的身高是:172.0

    三结果分析





      

     

     
    图一是a段代码执行完后的内存情况。
    图二是b段代码执行完后的內存情况。
    图三是c段代码执行完后的内存情況。
    图四是d段代码执行完后的内存情况。

  • 相关阅读:
    ArcEngine 里面的日期
    ArcEngine连接Oracle数据库
    ArcGIS连接Oracle数据库
    ms sql 带自增列 带外键约束 数据导入导出
    获取指定 MethodInfo 的 MSIL 或者 C# 源码
    架构知识集锦
    ClickOnce手动更新
    委托简单例子
    C# 多线程编程之锁的使用【互斥锁(lock)和读写锁(ReadWriteLock)】
    可扩展类库强制取消异步调用
  • 原文地址:https://www.cnblogs.com/ainima/p/6331690.html
Copyright © 2011-2022 走看看