image.png

    1. package com.itheima.memory;
    2. /*
    3. 目标:理解2个变量指向同一个对象的内存运行机制
    4. */
    5. public class Test {
    6. public static void main(String[] args) {
    7. // 创建学生对象
    8. Student s1 = new Student();
    9. s1.name = "小明";
    10. s1.sex = '男';
    11. s1.hobby = "睡觉,游戏,学习";
    12. s1.study();
    13. // 把s1变量赋值给一个学生类的变量s2
    14. Student s2 = s1; // 赋值的是对象的地址,创建的对象名类型一定是”类"
    15. System.out.println(s2);
    16. System.out.println(s1);//com.itheima.memory.Student@5f184fc6
    17. // 改变学生类Student的成员变量的值
    18. s2.hobby = "爱提问";
    19. System.out.println(s2.name);
    20. System.out.println(s2.sex);
    21. System.out.println(s1.hobby);// 由于s1和s2都是同一个对象地址,所以s1访问hobby的值被改变
    22. s2.study();
    23. }
    24. }
    25. (这是一个新定义的类)
    26. package com.itheima.memory;
    27. public class Student {
    28. String name;
    29. char sex;
    30. String hobby;
    31. public void study(){
    32. System.out.println("名称:" + name + ",性别" + sex + ",爱好:" + hobby + "开始学习了!");
    33. }
    34. }

    垃圾回收机制:
    image.png
    当对象名为null时(相当于连接堆内存的那根线断了),无法指向堆内存的方法和成员变量,这个时候这个对象就会被回收,给别人使用,提示程序的性能
    image.png