饥人谷java体系课

对象的基本概念

什么是对象

对象是数据和行为的集合
一切用new运算符创建出来的都是对象

对象是由什么组成

所有的对象都是在堆上分配的
每个对象都包含自己的数据(成员变量)
原生数据类型的成员
引用数据类型的成员

  1. public class Home {
  2. Cat cat;
  3. }
  4. public class Cat {
  5. int age;
  6. String name;
  7. public Cat(int age, String name) {
  8. this.age = age;
  9. this.name = name;
  10. }
  11. public void meow(){
  12. System.out.println("喵呜~~~");
  13. }
  14. }

java对象系统基础 - 图1

对象的构造函数

• 新建对象的唯⼀途径
• 在堆上分配空间
• 执⾏必要的初始化⼯作
• 执⾏构造器函数
• 如果没有任何构造器,编译器会偷偷摸摸帮你⽣成⼀个

方法的重载

• 重载(overload)与重写/覆盖(override)

重载

方法名相同,方法的参数不同
jvm字节码中允许方法名和参数相同返回值不同的方法存在
根据类型区分方法
调用重载方法时最匹配的优先

对象的初始化顺序

静态成员初始化
静态初始化块
成员初始化
初始化块
构造器初始化

对象的生命周期

jvm中的垃圾回收器会自动回收new的对象

jvm怎么知道哪个对象没有被用到

通过引用链(GC Root)
沿着GC Roots引用链可达的数据都是活对象,除此之外都是死对象可以被回收(但不一定就被回收,还是GC自己决定)
现在的jvm使用分代回收算法,可能会删除也可能压缩