Study/Java

[Java] indexOf, contains 메소드 비교 (특정 문자/문자열의 포함 여부 확인)

jonghne 2022. 11. 25. 15:12

개요

String형 변수에 특정 문자/문자열이 포함되어 있는지 확인할 때는 indexOf 또는 contains 메소드를 사용한다.

String str1="a@123@b";
// indexOf
System.out.println(str1.indexOf("@123@")>-1);
System.out.println(str1.indexOf("@123@"));

// contains
System.out.println(str1.contains("@123@"));

 

 

contains 와 indexOf 비교 

contains 메소드는 특정 문자/문자열이 포함되어 있는지 여부를 확인하는 메소드라면, 

indexOf 메소드는 찾는 문자/문자열의 위치를 확인할 수 있는 메소드이다.

 

각각의 결과값 아래와 같다.

1. contains
- 찾는 문자/문자열이 포함 O: true 
- 찾는 문자/문자열이 포함 X: false

2. indexOf 
- 찾는 문자/문자열이 포함 O: 위치한 첫번째 인덱스값 
- 찾는 문자/문자열이 포함 X: -1

 

메소드 별 사용 목적과 결과값이 조금씩 다르지만 

 

사실 contains 메소드의 구현부를 확인해보면 indexOf 메소드를 호출하여 포함 여부를 true/false 값으로 반환하는 것이기 때문에 동작 원리는 거의 같다고 볼 수 있다. 

 

그렇기 때문에 단순히 특정 문자열이 포함되어 있는지 확인하는 경우엔 contains 메소드를 사용해서 코드 가독성을 높이고,

포함된 위치까지 확인해야 할 때는 indexOf를 사용하면 될 것 같다.