客舟
追风逐影古来有,大宛渥洼君知否!

1. this和super,this调用自身的变量和其他构造器,super调用父类的方法和构造器。
2. 多态:一个对象变量可以指示多种实际类型的现象。声明和编译时类型为父类类型,实际运行时时其子类类型。
3. Java内联:例如内联调用e.getName()将被替换为访问e.name域。可以省去函数调用,加快效率,一般内联的方法都是很小(否则开支太大)且被设置成final或未被子类覆盖的方法。
自动拆箱总是内联;指令指定或注解指定触发内联。
4. Object类的默认hashCode方法导出对象的存储地址。重新定义equals方法就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中。
5. 自动装箱拆箱是编译器的行为,最后生成字节码,与虚拟机无关。Integer的值不在-128到127的时候使用==方法判断是否相等就会出错。
6. Java支持方法的参数数量不固定,写法 public double max(double... values) {}
7. 比较两个枚举类型的值时,直接使用 “==”。
8. 能够分析类能力的程序称为反射。
9. Java数组不能强转,Object[] obj = {"s1", "s2"}; String[] s = (String[])obj; 这是会报错的。Object[] obj = new String[]{"s1", "s2"}; String[] s = (String[])obj; 这样不会报错。可借助反射实现泛型数组。
10. 类继承的设计原则

  • 将公共方法和属性放在超类中。
  • protected在Java中没什么大用,同一个包中都可以访问,所以无法保证封装性。
  • 继承关系一定是从属关系。经理对象从属于雇员对象,而钟点工与雇员相比,他们之间都有相互用不上的属性,不是从属关系。
  • 除非所有继承的方法都有意义,否则不要使用继承(该条是否太严格,待讨论。)
  • 覆盖方法时,不要改变预期的行为,不要偏离最初的设计想法。
  • 使用多态,而避免使用类型检查来做代码分支。
  • 少使用反射。编译时较难发现错误。
posted on 2020-03-18 14:20  客舟  阅读(135)  评论(0编辑  收藏  举报