java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。 Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。 Object类是Java中唯一没有父类的类。 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。 boolean equals(Object obj) Indicates whether some other object is "equal to" this one. “==”运算符判断两个引用是否指向同一个对象。 对于Object类的equals()方法来说,它判断调用equals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。 Object类中的equals()方法如下: public boolean equals(Object obj){ return (this == obj);}
即Object类中的equals()方法等价于==。 只有当继承Object的类覆写(override)了equals()方法之后,继承类实现了用equals()方法比较两个对象是否相等,才可以说equals()方法与==的不同。
equals()方法需要具有如下特点: 自反性(reflexive):任何非空引用x,x.equals(x)返回为true。 对称性(symmetric):任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true。 传递性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。 一致性(consistent):两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息)。 约定:对于任何非空引用x,x.equals(null)应该返回为false。 并且覆写equals()方法时,应该同时覆写hashCode()方法,反之亦然。
|