본문 바로가기

반응형

이번 글에서는 문자열 안에 특정 문자열이 있는지 확인하는 두 가지 방법,
indexOf()contains()의 차이를 알아봅니다.
두 메서드는 비슷해 보이지만, 사용 목적과 반환 값이 다릅니다.


📌 예제 코드

public class IndexOfContainsExample {
	public static void main(String[] args) {
		String str = "자바 프로그래밍";
		
		int x = str.indexOf("프로그래밍");
		System.out.println(x);
		String str2 = str.substring(x);
		
		x = str2.indexOf("자바");
		if (x != -1)
			System.out.println("자바와 관련된 책이군요.");
		else
			System.out.println("자바와 관련 없는 책이군요.");
		
		boolean bool = str.contains("자바");
		if (bool)
			System.out.println("자바와 관련된 책이군요.");
		else
			System.out.println("자바와 관련 없는 책이군요.");
	}
}

💬 코드 설명

  1. str.indexOf("프로그래밍")
    → 문자열 "자바 프로그래밍"에서 "프로그래밍"이 시작되는 인덱스(3)를 반환
    → 이 인덱스를 기준으로 substring해서 "프로그래밍"만 추출
  2. str2.indexOf("자바")
    → "프로그래밍"에서 "자바"를 찾는데 없음 → -1 반환
  3. str.contains("자바")
    → "자바 프로그래밍"에 "자바"라는 단어가 포함되어 있는지 검사 → true 반환

💻 실행 결과

3
자바와 관련 없는 책이군요.
자바와 관련된 책이군요.

📌 간단 정리

메서드 용도 반환값 예시 결과
indexOf("문자열") 특정 문자열의 시작 위치 반환 숫자(인덱스), 없으면 -1 "자바 프로그래밍".indexOf("자바") → 0
contains("문자열") 포함 여부 확인 true / false "자바 프로그래밍".contains("자바") → true

💡 포인트 정리

  • indexOf()는 문자열이 시작되는 위치(인덱스)를 반환, 없으면 -1
  • contains()는 문자열 포함 여부만 확인 → true / false
  • 단순히 "이 단어가 들어있는가?"를 확인할 때는 contains()가 더 직관적
  • 위치가 필요하면 indexOf()를 사용해야 함

 

 

✅ 추가적으로!! equals() 와 contains()의 차이

역할 문자열 전체가 같은지 비교 부분 문자열이 포함되어 있는지 확인
반환값 true or false true or false
대상 전체 문자열 부분 문자열
예시 str.equals("apple") str.contains("app")
대소문자 구분 구분함 구분함
댓글