본문 바로가기

JAVA

[JAVA] 문자열 비교 equals() 제대로 사용하기

이직 후 첫 업무를 맡게 되었다!

특정 코드에 대해서 분기 처리하여 알맞은 문구를 보여주는 것이었다.

단순한 분기 처리여서 너무 쉬운데..?

// String code = ?

if(code.equals("AB01")) {
	// 문구 처리
} else {
	// 문구 처리
}

이렇게 하고 혼자 뿌듯해하고 있었다.

 

그런데 지나가던 팀장님이 한마디 해주셨다.

"이거 ~~ 해야 하지 않나?"

앗! 오랜만의 자바라서 헷갈렸나 보다ㅠㅠ 팀장님의 말씀으로 나의 실수를 인지하고 그 이후에 수정한 줄 알았다..

하지만 그대로 진행해버려서 시스템에 의해서 다시 한번 문제점을 지적받게 되었다! (바보)

 

뭐가 문제였을까?

 

만약 code 값이 null 이라면 어떻게 될까?

NullPointerException

null에는 equals도 없고.. 아무것도 없다 ㅠㅠ

잘 돌아가던 프로그램이 저 문법 하나로 오류가 날 수 있는 것이었다!!

예외처리가 안되었다면 더욱 더 최악...

 

이런 문제를 방지하려면 어떻게 해야 할까?

// String code = ?

if("AB01".equals(code)) {
	// 문구 처리
} else {
	// 문구 처리
}

 

오잉? 위치만 바꾸면 된다고..?

문자열 상수로 equals 함수는 무조건 실행이 가능하다.

 

그래도 code 값이 null 이라면 어떻게 될까?

실제로 해보니 code 값이 null 이면 false를 반환한다.

 

이유는..?

String.class

equals가 구현된 부분을 보니 이해가 되었다!

instanceof 연산자를 통해 String 객체인지 확인하고 아니면 false

자동으로 null 체크가 되어서 오류 걱정은 없어졌다.

 

단순하지만 헷갈리는 부분이어서 미리 정리해두었다.

다음부터는 실수하지 않도록 조심해야겠다!

'JAVA' 카테고리의 다른 글

[JAVA] indexOf() 분석해보기  (0) 2022.06.16
[JAVA] 문자열 비교 equals 와 == 의 차이점  (0) 2022.06.12