饥人谷java体系课
对象的基本概念
什么是对象
对象是由什么组成
所有的对象都是在堆上分配的
每个对象都包含自己的数据(成员变量)
原生数据类型的成员
引用数据类型的成员
public class Home {
Cat cat;
}
public class Cat {
int age;
String name;
public Cat(int age, String name) {
this.age = age;
this.name = name;
}
public void meow(){
System.out.println("喵呜~~~");
}
}
对象的构造函数
• 新建对象的唯⼀途径
• 在堆上分配空间
• 执⾏必要的初始化⼯作
• 执⾏构造器函数
• 如果没有任何构造器,编译器会偷偷摸摸帮你⽣成⼀个
方法的重载
• 重载(overload)与重写/覆盖(override)
重载
方法名相同,方法的参数不同
jvm字节码中允许方法名和参数相同返回值不同的方法存在
根据类型区分方法
调用重载方法时最匹配的优先
对象的初始化顺序
对象的生命周期
jvm怎么知道哪个对象没有被用到
通过引用链(GC Root)
沿着GC Roots引用链可达的数据都是活对象,除此之外都是死对象可以被回收(但不一定就被回收,还是GC自己决定)
现在的jvm使用分代回收算法,可能会删除也可能压缩