[Java] String을 Null Safe하게 비교

HoJeong Choi·2023년 4월 12일
0

Java꿀팁

목록 보기
1/1

String을 Null Safe하게 비교

str1.equals(str2)

  • s1이 null이면 당연히 NullPointerException
@Test
void test1() {

    String s1 = null;
    String s2 = null;

    assertThatThrownBy(() -> s1.equals(s2)).isInstanceOf(NullPointerException.class);
}

java.util.Objects.equals(Object, Object)

  • java7 부터 기본 ~
  • 둘 다 null이면 true를, 둘 중 하나가 null이면 false를, 그렇지 않으면 equals의 결과를 리턴
  • nullable한 객체에서 메소드를 호출하는게 아니라 static 메소드이므로 NullPointerException의 발생 가능성이 없음.
@Test
void test3() {

    assertThat(Objects.equals(null, null)).isTrue();
    assertThat(Objects.equals("hello", null)).isFalse();
    assertThat(Objects.equals(null, "world")).isFalse();
    assertThat(Objects.equals("hello", "hello")).isTrue();
    assertThat(Objects.equals("hello", "world")).isFalse();
}

Apache Commons

  • apache commons 라이브러리의 StringUtils.equals(str1, str2)
@Test
void test4() {

    assertThat(StringUtils.equals(null, null)).isTrue();
    assertThat(StringUtils.equals("hello", null)).isFalse();
    assertThat(StringUtils.equals(null, "world")).isFalse();
    assertThat(StringUtils.equals("hello", "hello")).isTrue();
    assertThat(StringUtils.equals("hello", "world")).isFalse();
}

0개의 댓글