1. 成员与初始化

  • 对象是一些数据与行为的集合。
  • 一切对象都是new运算符创建的:
    • new Object()
    • 特例:自动装箱 new Integer() / new String()
    • 特例:字面量 new Object[]
  • 对象都在堆上分配

2. 方法重载Overload

  • 重载(overload)与重写/覆盖(override)的区别
  • 重载的顺序:按参数的匹配的顺序

3. 对象的初始化顺序

  1. public class Cat {
  2. private static String name;
  3. {
  4. f();
  5. }
  6. public Cat(String name) {
  7. this.name = name;
  8. }
  9. public static void f() {
  10. System.out.printf("f");
  11. }
  12. public static void main(String[] args) {
  13. Cat cat = new Cat("meow");
  14. }
  15. }

4. 对象生命周期

  • 对象的内存如何被回收
    • 垃圾回收器
  • JVM怎么知道哪个对象没有被用到
    • 通过引用链(GC Roots)
    • 沿着GC Root向下,可达的数据都是活对象(强引用)
    • 不可达的数据回不回收取决于JVM