'String'에 해당되는 글 1건

  1. 2012.05.11 문자열 비교에 대한 고찰 equals()
2012.05.11 10:35
홍보배너링크
홍보배너링크


"".equals(str)과

str.equals("")의 차이점이 뭐야?

난 그저 "".equals(str)이 좋은거야 라고 듣고 그저 그렇게만 사용하고 있었는데

알아보니 심오한 구석이 있는 녀석이었다.


JAVA SE 1.6 API 에서는 이렇게 소개한다.

boolean equals(Object anObject)
Compares this string to the specified object.


1. boolean값을 반환하고

2. 매개변수로 Object를 input 시키고

3. Compares this string to the specified object.(문자열을 object와 비교한다.)


위에서 답이 나왔다.

올바른 활용법은 "문자열".equals(obj) 였던 것이다.

여기서 눈 여겨 볼 만한 것이 있다.

equals메서드는 매개변수로 Object를 받는다.

우리가 "" 또는 str 등의 문자열을 equals메서드의 매개변수로 사용할 수 있었던 이유는

문자열은 String이라는 클래스 즉 Object라는 소리다.

String이라는 자료형은 엄연히 java.lang이라는 패키지의 String이라는 클래스이다.


위에서 눈 여겨 본 내용중에 equals가 가지는 중요한 FACT(사실,요소)이 있다.

Object는 null이라는 값을 가질 수 있다.

때문에 "문자열".equals(null)이라는 비교에서 false라는 값을 정확히 반환해준다.


그렇다면 이런 경우에는?

String str = request.getParameter("param");

str.equals("");

만약 요청객체에 param이라는 매개변수에 값이 없다면? null을 가지고 있다면?

str.equals("");는 null.equals(""); 라는 비교가 된다.

이 때 Exception이 발생한다. NullPointerException


그러니까 이런 경우에는 null체크를 꼭 해주어야 한다.


//str이라는 변수에 null이 아닌 값이 있다면

if(str != null){

    //문자열을 비교한다.

    str.equals("");

}


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
홍보배너링크
Posted by 신나는 뒤벨로퍼 Imovator

티스토리 툴바