instanceof 运算符的陷阱
- instanceof 它用于判断前面的对象是否是后面的类或其子类、实现类的实例。如果是返回 true,否则返回 false。
- instanceof 运算符前面操作数的编译时类型必须是:
- 要么与后面的类相同
- 要么是后面类的父类
- 要么是后面类型的子类
构造器陷阱
- 构造器是 Java 中每个类都会提供的一个“特殊方法”。构造器负责对 Java 对象执行初始化操作,不管是定义实例变量时指定的初始值,还是在非静态初始化代码块中所做的操作,实际上都会被提取到构造器中执行。
- 构造器不能声明返回值类型,也不能使用void声明构造器没有返回值。
构造器创建对象吗
- 构造器并不会创建 Java 对象,构造器只是负责执行初始化,在构造器执行之前,Java 对象所需要的内存空间,是由 new 关键字申请出来的。绝大部分时候,程序使- 用 new 关键字为一个 Java 对象申请空间之后,都需要使用构造器为这个对象执行初始化,但在某些时候,程序创建 Java 对象无需调用构造器,如下:
- 使用反序列化的方式恢复 Java 对象
- 使用 clone 方法复制 Java 对象
到底调用哪个重载方法
第一阶段 JVM 将会选取所有可获得并匹配调用的方法或者构造器
第二个阶段决定到底要调用哪个方法,此时 JVM 会在第一阶段所选取的方法或者构造器中再次选取最精确匹配的那一个。
方法重写的陷阱
- 无法重写父类 private 方法。如果子类有一个与父类 private 方法具有相同方法名、相同形参列表、相同返回值类型的方法,依然不是重写,只是子类定义了一个与父类相同的方法。
static 关键字
- static 可以修饰类中定义的成员:field、方法、内部类、初始化代码块、内部枚举类
静态方法属于类
- 被 static 修饰的成员(field、方法、内部类、初始化块、内部枚举类)属于类本身,而不是单个的 Java 对象。静态方法也是属于类。