JAVAEx
기본 API 객체 비교(equals())
요리하다그만둠
2022. 5. 27. 18:05
equals()메소드는 매개 타입은 Object인데 이것은 모든 객체가 매개 값으로 대입될 수 있음을 말해줍니다.
비교 연산자인 == 과 동일한 결과를 리턴해주고
두 객체가 동일한 객체라면 true를 리턴하고 그렇지 않으면 false를 리턴한다.
Object obj1 = new Object();
Object obj2 = new Object();
boolean result = obj1.equals(obj2);
// - obj1 기존객체 obj2 비교객체
boolean result = (obj1 == obj2)
// 위와 결과 동일
자바에서는 두 객체를 동등 비교할 때 equals() 메소드를 흔히 사용합니다. 그렇다고 객체의 번지가 같다는것은 아님.
객체 동등 비교 .equals();
public class Member {
// 필드 생성
public String id;
// 생성자
public Member(String id) {
// this = 자기 자신의 객체를 참조하는 예약어
// 즉 클래스 내부에서 자신의 클래스를 지칭하는 객체
this.id = id;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) { // <-매개값이 Member 타입인지 확인
Member member = (Member) obj;
// Member 타입으로 강제 타입 변환하고 id필드값이 동일한지
// 검사한 후 동일하다면 true을 리턴해준다.
if(id.equals(member.id)) {
return true;
}
}// 매개값이 Member 타입이 아니거나 id 필드값이 다른 경우 false를 리턴해준다.
return false;
}
}
public class MemberEx {
public static void main(String[] args) {
Member obj1 = new Member("blue");
Member obj2 = new Member("blue");
Member obj3 = new Member("red");
if(obj1.equals(obj2)) {
// 매개값이 Member 타입이고 id 필드값도 동일하므로 true
System.out.println("obj1과 obj2는 동등합니다.");
} else {
System.out.println("obj1과 obj2는 동등하지 않습니다.");
}
if(obj1.equals(obj3)) {
// 매개값이 Member 타입이지만 id 필드값이 동일하지않아 false
System.out.println("obj1과 obj3는 동등합니다.");
} else {
System.out.println("obj1과 obj3는 동등하지 않습니다.");
}
}
}
<= 결과 출력
다른 예시로는
import java.util.Scanner;
public class Login {
Scanner sc = new Scanner(System.in);
String id; String pw;
//생성자 -- 생성자는 값을 받아 초기화 시킨다.
Login(String id, String pw) {
this.id = id; this.pw = pw;
}
String idCheck() {
if(id.equals("admin") && pw.equals("1111")) {
return"로그인 성공";
}else {
return"로그인 실패";
}
}
}
이렇게 id 와 pw를 비교해서 문자열을 비교해 값이 같으면 로그인 성공으로 나오고 아니면 실패로 나오는 예시
import java.util.Scanner;
public class LoginEx {
public static void main(String[] args) {
String id; String pw;
while(true) { // 무한루프
Scanner sc = new Scanner(System.in);
System.out.println("id : ");
id = sc.next();
System.out.println("pw : ");
pw = sc.next();
Login login = new Login(id, pw); // id.pw에 입력한 값이 들어감
String result = login.idCheck();
if(result == "로그인 성공") {
System.out.println("id " + login.id + "\npw : " + login.pw + "로그인 성공" );
break; // while 종료
} else {
System.out.println("id " + login.id + "\npw : " + login.pw + "로그인 실패" );
}
}
}
}