1. 为什么使用 java.lang 包下的所有类,都不需要手动导入
因为编译器会默认导入java.lang 包,所以,不需要手动导入,
2. Java 对象在比较前都要实现equals 和hashcode 方法,equals 默认使用Object对象的equals 方法,只比较对象引用地址是否一致。hashcode方法则是在使用Map 或者Set 需要散列的集合的时候,用来计算散列值的,如果2个对象hash值一样的话,则集合中只会保存一个对象。
3. 在Java规范中,对 equals 方法的使用必须遵循以下几个原则:
①、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
②、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
③、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
④、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改
⑤、对于任何非空引用值 x,x.equals(null) 都应返回 false。
4. getClass 方法用来返回对象的运行时类。
5. 一个类必须要有一个构造器的存在,如果没有显示声明,那么系统会默认创造一个无参构造器。