본문 바로가기
My Image
프로그래밍/Java

[JAVA] 문자열 contains과 equals 함수 NULL체크 차이점

by Lim-Ky 2020. 8. 5.
반응형

안녕하세요. 오랜만에 인사드리네요~

오늘은 JAVA String 문자열 처리시에 사용하는 여러 함수 중 contains과 equals 함수 들간에 NULL체크 차이점에 대해서 알아보도록 하겠습니다.

 

간단합니다. contains은 A.contains(B) 라고 했을 때, A문자열 중에 B라는 문자열이 포함되어 있는지 여부를 판단해서

결과를 리턴해주는 함수입니다.

 

equals 은 A.equals(B) 라고 했을 때, A문자열이 B문자열과 완전히 동일한지 비교해서 일치여부를 리턴해주는 함수입니다.

 

헌데, 두 함수의 차이점이 있습니다. 만약, B라는 문자열을 담고있는 변수를 초기화 또는 값을 셋팅하지 않고 해당 함수를 사용하면 어떤일이 벌어질까요?? equals 함수는  B변수가 null이여도 NullPointerException 발생시키지 않지만 contains 함수는 B변수가 null이면 NullPointerException 발생시킵니다.

 

왜냐면 두 함수간의 철학이 다른 것 같습니다. contains는 무조건 비교할 B변수가 어떤 문자열을 가지고 있다는 것을 가정하고, A변수에 B문자열이 포함되는지 여부를 판단하는데 B변수에 비교할 문자열이 저장되지 않는다는 것을 애시당초 고려하지 않습니다. 따라서 contains 함수를 사용하기전에 반드시 null check는 필수입니다!!!

 

아래 코드를 보면서 NullPointerException을 contains 함수에서만 발생시킨다는 것을 확인해봅시다.

 

equals 와 contains NullPointerException 예제

 

반응형

댓글