四张內存变化图揭秘引用类型数组的初始化
2016-09-24 21:46
330 查看
一代码示例
二运行结果
我的年龄是:20,我的身高是:172.0
我的年龄是:20,我的身高是:172.0
三结果分析
图一是a段代码执行完后的内存情况。
图二是b段代码执行完后的內存情况。
图三是c段代码执行完后的内存情況。
图四是d段代码执行完后的内存情况。
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段代码执行完后的内存情况。
相关文章推荐
- 四张內存变化图揭秘引用类型数组的初始化
- 三张內存变化图揭秘基本类型数组的初始化
- 三张內存变化图揭秘基本类型数组的初始化
- 【java基础】引用类型数组初始化中,setter和getter函数空指针问题
- 引用类型数组的初始化
- javaSE学习15_引用类型数组的初始化
- 引用类型数组初始化
- 1.在使用new创建数组后,此时数组还是一个引用数组。 只有再创建新的对象,并把对象赋值给数组引用,到此初始化结束2.什么是引用类型?
- (三)引用类型数组的初始化
- JAVA 引用类型数组的初始化
- Julia: 引用与copy: 关于数组、自定义类型与初始化
- 在循环中总是显示初始化引用类型的数组
- 数组与方法中 值类型/引用类型
- java数组定义与初始化,类型转换,instanceof的使用
- 什么是List?如何声明与初始化?引用类型 ?值类型(value type)?装箱 (boxing)?
- 数组与字符串、字符指针与其他类型指针、赋值参数、指针参数以及引用参数、函数指针
- 详解值类型与引用类型 结合ref (利用案例一步步分析内存的变化)
- Java学习之旅基础知识篇:数组及引用类型内存分配
- C机顶盒开发实战常用初始化类型:数组、结构、指针
- 转载(深刻地了解到了js数组是引用类型)