Object类详解
包:java.lang.Object
Object 是java中的root类,所有类都继承它,也就实现了 object的所有方法。
-----------------常用方法---------------------
构造方法:
1 public class Object { 2 3 private static native void registerNatives(); 4 static { 5 registerNatives(); 6 }
equals:
1 public boolean equals(Object obj) { 2 return (this == obj); 3 }
toString():
1 public String toString() { 2 return getClass().getName() + "@" + Integer.toHexString(hashCode()); 3 }
我暂时就知道这两个会被子类复写。也尽量去复写吧。
--------------------equals() 方法的特点-------------------------------
自反性: x.equals(x) -> true
对称性: x.equals(y) -> true , y.equals(x) -> true
传递性: x.equals(y) -> true , y.equals(z) -> true , x.equals(z) -> true
一致性: x.equals(y) 多次调用返回值不变.
对于和非空引用x , x.equals(null) ->false
true表明两个引用指向同一个object.
当Override equals()方法时候,必须也要override hashCode()方法。因为相等的对象也有相同的hashcode值。
--------------------hashCode()-----------------------------------
为了更好的使用java.util.HashTable.
特点:
在Java的一次执行过程中,对于同一个对象的hashCode调用,返回相同的值。不同的执行过程中,hashcode值可以不一致。
如果两个对象equals->true,那么他们的hashCode值必须相同
对于两个对象equals->false, 那么这两个对象的hashcode 值不一定要求不同,但是不同可以提高应用的性能。
Object对象的hashCode()不同,因为它表示的是对象的地址。