Statement
The articles are all my technical notes. Please indicate the source for reprinting https://segmentfault.com/u/yzwall
Object class is the parent class of all classes. In Java, only basic data types are not objects. All array types (object type && basic data type array) are inherited from the Object class;
In the Object class, two objects are judged by judging whether they have the same reference. Whether the objects are the same;
As long as the subclass overrides the equals method, it must override the hashCode method
// in java.lang.Object public boolean equals(Object obj) { return (this == obj); }
Reflexivity: A.equals(A) returns true;
Symmetry: The result of A.equals(B) is sum B.equals(A) is the same;
Transitiveness: A.equals(B) is true, B.equals(C) is true, then A. equals(C) is true
Consistency: For non-null references A and B, as long as the object information used in the equals() comparison operation remains unchanged, multiple times Calling A.equals(B), the results are consistent;
For any non-null reference, x.equals(null) must return false;
When overriding the equals method, the parameter type must be the Object type
class myObject { private String name; private int age; ... public getName() { return this.name; } public getAge() { return this.age; } } /** * 重写equals方法demo步骤 * Effective Java中推荐方式 */ public boolean equals(Object x) { // 1. 检查x和this是否引用同一个对象 if (x == this) { return true; } // 2. 检查x对象类型是否是myObject派生 if (!(x instanceof myObject)) { return false; } // 3. 比较数据域 // 经过1,2检查,将参数转换为正确类型 myObject o = (myObject)(x); return this.name.equals(x.getName()) && this.age == (x.getAge()); }
hashCode method
Returns the hash code of the object, Equal objects must return equal hashCode, and the hashCode of different objects are as unequal as possible;
// in java.lang.Object public native int hashCode();
Rewriting equals without rewriting hashCode will result in"unequal objects have the same hashCode", resulting in collection classesHashMap
, HashSet
and Hashtable
will not work; in the extreme case, make the hashCode of all objects equal in the hash table and all objects will be mapped to the same bucket , the hash table degenerates into a linked list;
When two objects call equal and return true, then the two objects each call hashCode() and return the samehashCode;
When two objects call equal and return false, the hashCode returned by the two objects each calling hashCode() can be the same (Hash conflicts cannot be completely avoided )
The toString method in the Object class outputs the object's "object class name@hash code";
The articles are all my technical notes. Please indicate the source for reprinting https://segmentfault.com/u/ yzwall
The Object class is the parent class of all classes. In Java, only basic data types are not objects. All array types (object types && basic data type arrays) are inherited from the Object class;
The Object class determines whether two objects have the same reference. Whether the objects are the same;
As long as the subclass overrides the equals method, it must override the hashCode method
// in java.lang.Object public boolean equals(Object obj) { return (this == obj); }
Reflexivity: A.equals(A) returns true;
Symmetry: The result of A.equals(B) is sum B.equals(A) is the same;
Transitiveness: A.equals(B) is true, B.equals(C) is true, then A. equals(C) is true
Consistency: For non-null references A and B, as long as the object information used in the equals() comparison operation remains unchanged, multiple times Calling A.equals(B), the results are consistent;
For any non-null reference, x.equals(null) must return false;
When overriding the equals method, the parameter type must be the Object type
class myObject { private String name; private int age; ... public getName() { return this.name; } public getAge() { return this.age; } } /** * 重写equals方法demo步骤 * Effective Java中推荐方式 */ public boolean equals(Object x) { // 1. 检查x和this是否引用同一个对象 if (x == this) { return true; } // 2. 检查x对象类型是否是myObject派生 if (!(x instanceof myObject)) { return false; } // 3. 比较数据域 // 经过1,2检查,将参数转换为正确类型 myObject o = (myObject)(x); return this.name.equals(x.getName()) && this.age == (x.getAge()); }
hashCode method
Returns the hash code of the object, Equal objects must return equal hashCode, and the hashCode of different objects are as unequal as possible;
// in java.lang.Object public native int hashCode();
Rewriting equals without rewriting hashCode will result in"unequal objects have the same hashCode", resulting in collection classesHashMap
, HashSet
and Hashtable
will not work; in the extreme case, make the hashCode of all objects equal in the hash table and all objects will be mapped to the same bucket , the hash table degenerates into a linked list;
When two objects call equal and return true, then the two objects each call hashCode() and return the samehashCode;
When two objects call equal and return false, the hashCode returned by the two objects each calling hashCode() can be the same (Hash conflicts cannot be completely avoided )
The toString method in the Object class outputs the object's "object class name@hash code";
The above is the detailed content of Method analysis of Object class in Java. For more information, please follow other related articles on the PHP Chinese website!