在开始讲Java引用变量前,我们先聊聊Java对象首先我们先构造一个Java对象,此对象包含两个属性
![471376b228d49fbb4c3cd93d4c473ae4.png](https://img-blog.csdnimg.cn/img_convert/471376b228d49fbb4c3cd93d4c473ae4.png)
Java对象
其中,需要注意的是Java对象的构造方法,Java构造方法的特点为:
1. 方法名必须和类名相同
2. 可以有多个参数或者没有参数(无参构造器)
3. 没有任何返回值,包括void
4. 默认返回类型就是对象类型本身
有趣的是,如果为构造方法定义了返回值类型或使用void声明构造方法没有返回值,编译时编译器不会报错,因为Java编译器会把这个所谓的构造方法当成普通方法来处理
然后我们在main方法中,创建一个Java对象
![f1454ebefda2e26407e24f93f1b62139.png](https://img-blog.csdnimg.cn/img_convert/f1454ebefda2e26407e24f93f1b62139.png)
main方法为程序入口
敲黑板进入本节重点:
声明两个Book的引用变量并创建Book对象,然后将Book对象赋值给引用变量
现有两个Book对象生活在堆上
Book a = new Book();
Book b = new Book();
![d835d965cc4c760710cc6056f66d4839.png](https://img-blog.csdnimg.cn/img_convert/d835d965cc4c760710cc6056f66d4839.png)
声明一个引用对象Book c,但不创建新的Book对象而将引用变量b的值赋值给变量c。代表将变量b的值拷贝一份给变量c。此时对象数依旧为2 引用数为3 因2个引用变量指向一个对象
![cb08f03945a182e5a17fa362748cd9cd.png](https://img-blog.csdnimg.cn/img_convert/cb08f03945a182e5a17fa362748cd9cd.png)
如果将引用变量a的值拷贝一份赋值给c
c=a 引用变量的数量依旧是3 对象数为2 a和c指向的同一个Book对象1
![cb017889fd670c6abf42d62b508eb079.png](https://img-blog.csdnimg.cn/img_convert/cb017889fd670c6abf42d62b508eb079.png)
Java对象是存在于堆空间,如果对象未被引用则将被垃圾收集器(GC)回收
![3034e1f18bb2bea7068c7e58546386d4.png](https://img-blog.csdnimg.cn/img_convert/3034e1f18bb2bea7068c7e58546386d4.png)
技术无涯,笔者的水平有限 欢迎大家指点 下节讲对象的行为