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를 사용하면 될 것 같다.