异常
Throwable中的方法
throws和throw
异常处理
自定义异常
细节
==和equals的区别和联系
“==”是关系运算符,equals()是方法,同时他们的结果都返回布尔值;
“==”使用情况如下:
a) 基本类型,比较的是值
b) 引用类型,比较的是地址
c) 不能比较没有父子关系的两个对象
equals()方法使用如下:
- 系统类一般已经覆盖了equals(),比较的是内容。
- 用户自定义类如果没有覆盖equals(),将调用父类的equals(比如是Object),而Object的equals的比较是地址(return (this == obj);)
- 用户自定义类需要覆盖父类的equals()
注意:Object的==和equals比较的都是地址,作用相同
实现高质量的equals方法的诀窍包括
- 使用==操作符检查“参数是否为这个对象的引用”;
- 使用instanceof操作符检查“参数是否为正确的类型”;
- 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;
- 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;
- 重写equals时总是要重写hashCode;
- 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。