JAVA/Good Coding

[JAVA] 문자열 찾기 함수 효율 비교(indexOf, contains, matches)

Yoon 2021. 3. 8. 22:39

 

자바에는 문자열을 찾을 때 사용하는 함수가 있다.

 

첫번째, indexOf.

 

문자열에서 검색하고자 하는 문자의 위치 인덱스를 return한다.

 

ex) System.out.println("Hello World".indexOf("W"));

     return 6

 

문자열에서 찾고자 하는 문자가 존재하지 않으면 -1을 return한다


두번째, contains.

 

문자열에서 검색하고자 하는 문자나 문자열의 위치가 포함되어 있는지 boolean형태로(true/false) return한다.

 

ex) System.out.println("Hello World"("Hello"));

     return true

 

문자열에서 찾고자 하는 문자나 문자열이 존재하지 않으면 false를 return한다.


세번째, matches

 

문자열에서 검색하고자 하는 문자열을 정규식을 이용하여 검색한다. return은 boolean형태다.

 

ex) System.out.println("1234".matches(".*[0-9].*"));

     return true;

 

문자열에서 찾고자 하는 문자가 존재하지 않으면 false를 return한다.


그렇다면 이 셋 중에서 어떤 함수를 쓰는게 제일 효율적일까?

 

예제 코드

문자열 찾기 함수를 이용해서 코드를 작성하다보면 이런 경우를 마주칠 때가 있다.

제대로 작성한 것 같은데 빨간줄?

indexOf()를 contains()로 교체할 수 있다는 알림문을 띄운다.

 

왜 이런 알림문을 띄우는지 의문이 생겼다.

저 알림문에 상세 내용을 펼쳐 보면

 

대충 자바 5 이상부터는 indexOf()대신 contains()를 사용하길 권장하고 있다고 한다.