面向对象的精髓在抽象;面向对象的困难在抽象;面向对象的成功在于成功的抽象;面向对象的失败在于失败的抽象。

  • 敲每个 . 时,考虑
  1. 会不会出现空指针?
  2. 有没有异常抛出?
  3. 是不是在热点区域?
  4. 在哪个线程执行?
  5. 有没有并发锁间隙?
  6. 会不会并发修改不可见?

    疑问

  • 为什么switch case中无法将包装类Integer自动拆箱?为什么变量j 不能编译通过,而变量i却能编译通过,j和i有什么区别?
    1. final Integer k = 0;
    2. final int j = k;
    3. final int i = 1;
    4. switch (1) {
    5. case k://编译报错
    6. break;
    7. case j://编译报错
    8. break;
    9. case i://编译正常
    10. break;
    11. }