美文网首页Java我爱编程
Java中数组引用和内存理解

Java中数组引用和内存理解

作者: 疯帮主 | 来源:发表于2018-05-27 23:22 被阅读0次

    源码

    /*
        数组引用
    */
    
    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

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

    相关文章

      网友评论

        本文标题:Java中数组引用和内存理解

        本文链接:https://www.haomeiwen.com/subject/trgijftx.html