Java中数组引用和内存理解

源码

/*
    数组引用
*/

class Array1{
    public static void main(String[] args){
        // 定义多维Person对象
        Person[] students;
        // 初始化两个对象
        students = new Person[2];
        
        //定义一个person对象,静默初始化
        Person zhang = new Person();
        //对zhang实例属性赋值
        zhang.age = 18;
        zhang.height = 188;

        //定义一个person对象,静默初始化
        Person li = new Person();
        //对zhang实例属性赋值
        li.age = 20;
        li.height = 200;

        //给students实例赋值, 实际是引用,只有基本数据数据类型会赋值,引用类型都是引用
        students[0] = zhang;
        students[1] = li;

        //输出
        zhang.info();
        students[0].info();
        li.info();
        students[1].info();

        //修改li实例
        li.age = 22;
        li.height = 220;
        li.info();
        students[1].info();
    }
}

class Person{
    public int age;
    public int height;

    public void info(){
        System.out.println(age + " : " + height);
    }
}

输出

H:\Code\Java\learn\array>java Array1
18 : 188
18 : 188
20 : 200
20 : 200
22 : 220
22 : 220

1.定义多维Person对象

开始只是在栈内存中申请了内存,定义了引用变量

image.png

2.动态初始化studnets实例

在堆内存里声明两块内存,引用变量默认赋值为null

image.png

3.静默初始化zhang实例

先在栈内存有了空间,再在堆内存声明变量,赋默认值

image.png

4.给zhang对象属性赋值

image.png

5.li对象同上

image.png

6.给students赋值,实际是引用(就是同一个东西,都很多名称)

让它指向其他对象

7.修改students[]或zhang的值,另一个对象也在改变

引用(就是同一个东西,都很多名称)

image.png

这是笔者的理解,有什么不足的地方请指出

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第6章类文件结构 6.1 概述 6.2 无关性基石 6.3 Class类文件的结构 java虚拟机不和包括java...
    kennethan阅读 4,563评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,900评论 1 32
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,504评论 11 349
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,007评论 8 265
  • 其实,一直都是一个喜欢安静的人,尤其喜欢在清闲的时光里,写一些自己心仪的文字,看一些自己衷情的文字,听一些自己喜欢...
    小席的人生阅读 1,760评论 0 1

友情链接更多精彩内容