본문 바로가기

Develop/JAVA & Spring

올바른 equals() 사용법

java, jsp에어 가장 빈번하게 사용되는 문자열 관련 함수는 비교 함수 equals() 일것입니다.

 

equals()는 보통 이런 형태로 많이들 사용할 것입니다.

 

변수.equals(비교문자열)

 

이 형태는 변수의 값이 절대적으로 null이 나오지 않을 경우에는 상관이 없습니다.

 

하지만 requst.getParameter()를 사용해서 변수의 값을 초기화 한다거나 변수의 값이 수시로 바뀔 수 있는 상황에서는

 

null 이 들어올수 있습니다.

 

변수.equals(비교문자열) 이 형태에서 변수에 null 이 들어오게 되면 Exception 이 발생하나는건 잘 아실겁니다.

 

하지만  

 

비교문자열.equals(변수)

 

형태로 문자열을 비교한다면 변수에 null 이 들어와도 Exception 이 발생하지 않습니다.(false 출력됨)

 

이유는 문자열을 비교할때 주체가 되는 대상이 달라지기 때문입니다.

 

변수.equals(비교문자열) : 변수가 주체가 되어서 문자열 비교

 

비교문자열.equals(변수) : 비교문자열이 주체가 되어서 문자열 비교

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%

    String testVal = null;

    String result = "";

        

    /* Exception 발생 */

    //if( !(testVal.equals("")) ) result = "1";

    

    /* 정상 */

    if( !("".equals(testVal)) ) result = "2";

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%=result %>

</body>

</html>

 

주석 처리를 통해서 두가지 경우를 비교해 보시면 될겁니다.

 

간단하지만 쉽게 잊을만한 내용입니다.

 

수고하세요.