Language/Java

Object.equals()와 equals() 의 차이

이웃비 2020. 12. 9. 01:11

 

equals()의 사용

public class Equals {
	public static void main(String[] args) {
    	String a = null;
        String b = "aa";
        
        System.out.println(a.equals(b)); // NullPointException 발생!
        
    }
}

우리는 흔하게 문자열을 비교할 때 equals()를 사용합니다. 그러나 위의 예시처럼 a가 null일경우, null 에러가 발생합니다. 따라서 equals()를 사용할때는, 다음과 같이 null 예외처리를 해줘야 합니다

 

public class Equals {
	public static void main(String[] args) {
    	String a = null;
        String b = "aa";
        
        if(aa != null && aa.equals(bb)) {
        	System.out.println("a equal to b");
        }
    }
}

이렇게 처리하지 않고 null 에러를 일으키지 않으며 비교할 수 있는 방법이 있을까요? Object.equals()를 사용하면 null을 포함하여 비교할 수 있습니다.

 

Objects.equals()의 사용

public class Equals {
	public static void main(String[] args) {
    	String a = null;
        String b = null;
        String c = "apple";
        String d = "apple";
        
        System.out.println(Objects.equals(a, b)); // true
        System.out.println(Objects.equals(c, d)); // true
        System.out.println(Objects.equals(a, c)); // false

    }
}

만약 a가 null인것을 거르고 싶다면, 다음과 같이 할 수 있습니다

 

public class Equals {
	public static void main(String[] args) {
    	String a = null;
        String b = "aa";
        
        if(aa != null && Objects.equals(a, b)) {
        	System.out.println("a equal to b(a is not null)");
        }
    }
}