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 + "로그인 실패" );

			}
		}
		
		
		
		
	}
}