您的位置:首页 > 其它

四张內存变化图揭秘引用类型数组的初始化

2016-09-24 21:46 330 查看
一代码示例

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段代码执行完后的内存情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: