Etc

java, equals 사용할 때 기본 확인사항

SuperDT 2024. 7. 26. 08:03

Java에서 equals 메서드를 사용할 때 변수의 앞뒤 순서는 매우 중요합니다

null이 될 가능성이 있는 객체를 뒤에 두는 것이 좋은데요

 

너무나 당연한 이야기입니다

null은 아무것도 없는 상태인데 메서드를 호출할 수 없기 때문입니다

 

1. null 객체가 앞에 오는 경우, NullPointerException 발생

public class TipEquals {
    public static void main(String args[]){
        String str1 = null;
        String str2 = "미침";
        if(str1.equals(str2)){

        }
    }
}

 

 

2. 문자열 객체가 앞에 오는 경우, 정상 비교 후 종료

public class TipEquals {
    public static void main(String args[]){
        String str1 = null;
        String str2 = "미침";
        if(str2.equals(str1)){

        }
    }
}

 

예상 못하게 앞에 값이 null이 온다면

아래와 같이 null체크나 예외처리를 해주어야 합니다

public class TipEquals {
    public static void main(String args[]){
        String str1 = null;
        String str2 = "미침";

        //str1 null 체크
        if(str1 != null && str1.equals(str2)){

        }

        //예외를 예상하고 예외처리
        try{
            if(str1.equals(str2)){

            }
        }catch(Exception e){
            System.out.println("str1 value is null");
        }

    }
}

 

하나의 변수가 무조건 null이 아니라면

간단하게 앞뒤 순서를 정하는 것으로 불필요한 코드를 줄일 수 있습니다

 

번외로 대소문자 구분없이 문자열을 비교하고 싶을 때는

대소문자 변환할 필요없이

equals가 아닌 equalsIgnoreCase를 사용하시면 됩니다