안녕하세요. 


전 원래 C/C++ 로  주 언어 였고,  

이전에도 Java 언어는 알기는 했지만,  안드로이드 때문에  Java를  많이 사용하게 되었답니다. 


Java 코드를 보면서


참 희한하게 코딩을 한다고 느낀 것중에 하나가, 



if ("".equals(문자열변수))



이런식의  코딩이었답니다. 


C/C++ 언어라면  상상도 할 수 없는 코딩이죠. 


아무튼 이런식으로도 코딩을 하는구나 하고는  알게 되었지만.  



태생이 C/C++ 보다 보니까,   아무래도  어색한 표기인것은 어쩔 수가 없더군요. 


그래서,  주로 


if ( 문자열변수.equals(상수))  


이런식을 표기를  주로 사용했답니다.  


두 조건절의  의미는 똑같지만,   두번째 비교가  저한테는 더 익숙했으니까요. 





그런데,  지난주에  첫번째 비교의 힘을  깨닫는  경우를 발견하였답니다. 



평소와 같이   


String final static DEFAULT = "default";


void func(String str) {

     if ( str.equals(DEFAULT))  {

     .....

    }

}


이런식으로  코딩을 했었는데요.   




그런데,   파라미터로   null 이 넘어오는 경우가 생겼고,  

프로그램이  null exception 나오면서 죽어 버리더군요. 



null 체크를 안한  제 불찰이기는 하지만,  

만약 위 상황을  앞에서 이야기한  상수가 앞에오는 비교였다면  아무 문제가 없을 코드 였답니다. 




String final static DEFAULT = "default";


void func(String str) {

     if ( DEFAULT.equals(str))  {

     .....

    }

}



위와 같이  했었다면,  str로  null 이 오던  값이 오던  다 아무 문제 없이 실행이 된답니다. 



참 간단한 팁인데,  프로그램의 안정성에  많은 도움이 되는 것이더군요. 


그제서야   참  이상하게 비교를 한다고 생각하던  비교문이 단순히 이상한 것이 아닌 

이유가 있는  사용법 이었더군요. 



수고하세요!