728x90
public boolean equals(Object obj)
Indicates whether some other object is "equal to" this one. The equals method implements an equivalence relation on non-null object references:
◦ It is reflexive : for any non-null reference value x, x.equals(x) should return true.
◦ It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
◦ It is transitive : for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
◦ t is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified. For any non-null reference value x, x.equals(null) should return false.
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true). Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
Parameters:obj - the reference object with which to compare.
Returns:true if this object is the same as the obj argument; false otherwise.
See Also:hashCode(), HashMap
다른 객체가이 객체와 "동일한 지"여부를 나타냅니다.
equals 메소드는 널이 아닌 오브젝트 참조에 대해 동등한 관계를 구현합니다.
반사적입니다. null이 아닌 참조 값 x의 경우 x.equals (x)는 true를 반환해야합니다.
◦ 대칭 : null이 아닌 참조 값 x 및 y의 경우, y.equals (x)가 true를 반환하는 경우에만 x.equals (y)가 true를 반환해야합니다.
◦ 전 이적입니다. null이 아닌 참조 값 x, y 및 z의 경우 x.equals (y)가 true를 반환하고 y.equals (z)가 true를 반환하면 x.equals (z)는 true를 반환해야합니다.
◦ 일관성 : null이 아닌 참조 값 x 및 y에 대해 x.equals (y)를 여러 번 호출하면 객체의 등가 비교에 사용 된 정보가 수정되지 않은 경우 지속적으로 true를 반환하거나 false를 반환합니다.
◦ null이 아닌 참조 값 x의 경우 x.equals (null)은 false를 반환해야합니다.
Object 클래스의 equals 메소드는 객체에 대해 가장 구별 가능한 등가 관계를 구현합니다. 즉, null이 아닌 참조 값 x 및 y에 대해이 메서드는 x 및 y가 동일한 객체를 참조하는 경우에만 true를 반환합니다 (x == y에 true 값이 있음). 동일한 객체가 동일한 해시 코드를 가져야한다는 hashCode 메서드의 일반 계약을 유지하려면 일반적으로이 메서드를 재정의 할 때마다 hashCode 메서드를 재정의해야합니다.
파라미터 : obj-비교 대상의 참조 객체
반환 값 :이 객체가 obj 인수와 같은 경우는 true 그렇지 않은 경우는 false.
참조 : hashCode (), HashMap
package kr.or.ksmart;
class MemberDto{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31; //주소값
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode()); // 해쉬코드가 들어가있는데 연산을 함
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MemberDto other = (MemberDto) obj; //객체도 비교하면서 object도 비교함
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
class MemberDto2{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
public class JavaBasic01 {
public static void main(String[] args) {
/**
* equals : 두 객체가 동일한지 비교하는 메서드
*/
//object의 메서드로 비교
MemberDto2 m21= new MemberDto2();
MemberDto2 m22= new MemberDto2();
MemberDto2 m23= m21;
System.out.println(m21.equals(m22) + " m21-m22 object equals"); //주소값이 달라서 false
System.out.println(m21.equals(m23) + " m21-m23 object equals"); //주소값이 같아서 true
//오버라이딩한 메서드로 비교
MemberDto m1= new MemberDto();
MemberDto m2= new MemberDto();
System.out.println(m1.equals(m2) + " m1-m2 object equals");
}
}
반응형
'Backend > JAVA' 카테고리의 다른 글
JAVA 인터페이스 interface (0) | 2020.04.29 |
---|---|
JAVA instanceof 연산자 (0) | 2020.04.29 |
JAVA - hashCode( ) (0) | 2020.04.29 |
JAVA 추상 클래스 (0) | 2020.04.27 |
JAVA override && final (0) | 2020.04.27 |
댓글