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이 올 수 있는 상황을 모르고 지나치치않을까 라는 생각이 더 들긴한다..
헿