기록창고

String.equals() 본문

JAVA

String.equals()

방금시작한사람 2020. 1. 19. 18:14

문자열을 비교할 때는 이렇게 사용했다.

 

String str = "Something";

if(str.equalsIgnoreCase("something)) {
    System.out.println("str is same");
}

그치만 만약 str이 null 이라면..?

 

위에서는 String str = "Something" 이렇게 명시적으로 선언해줬기 때문에 바로 알 수 있지만

 

public String checkSameStr(String str) {
    if(str.equalsIgnoreCase("Something)) {
        /* logic */
    } else {

    }
}

위와 같은 함수를 만들어서 사용할 수 있다.

 

그렇지만 함수 인자로 받은 str 가 null 이 아니라는 보장이 없다.

 

그래서 str이 null인 상태에서 실행하면 NullPointerException error 가 발생한다...

 

public String checkSameStr(String str) {
    if("Something".equalsIgnoreCase(str) { 
        /* logic */ 
    } 
}

 

그래서 if 문에 있는 equals을 순서를 바꿔서 저렇게 할 경우 NullPointerException 이 발생하지않고
else 문으로 넘어간다.

 

첫번째처럼 작성했을 때의 장점은 ....
str이 아무것도 없이 null 인거 자체가 예상하지 못한 상황이라서 버그일 수도 있다.
그래서 발견할 수 있는 것이다! 두번째처럼 작성했으면 else문으로 넘어가 그냥 진행된다.

 

두번째의 장점은 null이 들어오더라도 알아서 대처한다는 것
null 까지 포함한 인자가 들어올줄 알고 작성했다면 두번째가 조금 더 유연하다는 것.

 

그래서 잘모르겠다...

 

괜히 두번째처럼 썼다가 null이 올 수 있는 상황을 모르고 지나치치않을까 라는 생각이 더 들긴한다..

 

'JAVA' 카테고리의 다른 글

CompletableFuture 을 이용한 비동기 요청  (0) 2020.06.09
기본형과 래퍼 클래스(Wrapper Class)  (0) 2020.02.18
Collectors GroupingBy  (0) 2020.01.16
JAVA List for 문으로 remove하기  (0) 2020.01.05
equals() override  (0) 2019.12.28
Comments