Study/java

[Java] String - contains : 문자열 포함 여부

 

contains 메서드는 문자열에 특정 문자가 포함되어 있는지 여부를 판별합니다.

 

contains(CharSequence s)

contains는 문자열을 다룰 때 많이 사용하는 메서드입니다.

매개변수로는 CharSequence를 받는데, String이 CharSequence를 구현한 클래스이기 때문에 문자열을 변수로 사용해도 됩니다.

 

사용방법은 다음과 같습니다.

String s = "aaaaaaaa";
System.out.println("a : " +  s.contains("a"));
System.out.println("b : " + s.contains("b"));
System.out.println("aaaaaaaaaaaaaaaaaaaa : " + s.contains("aaaaaaaaaaaaaaaaaaaa"));
System.out.println("aaaaaaaa : " + s.contains("aaaaaaaa"));

contains 사용결과

"aaaaaaaa"에 "a"가 있기 때문에 true를 반환하고 "b"는 없기 때문에 false를 반환합니다.

 

String 클래스에는 contains라는 메서드가 존재하긴 하지만 실제 내부 로직은 indexOf(String str, 0) > -1의 결과를 반환하는 방식입니다.

그러니까 쉽게 말하면 s.contains("a")와 s.indexOf("a", 0) > -1의 결과가 같습니다.

찾을 문자의 실제 위치보다는 그 문자가 있는지 없는지만 판별하고자 할 때 사용하려고 만든 것 같습니다.

 

굳이 따로 contains를 위한 로직을 짜는 것보다 찾으려는 문자열이 없으면 -1을 반환하는 indexOf메소드가 이미 있기 때문에 -1보다 크면 true, 아니면 false를 반환하는게 더 나아서 이렇게 설계한 듯 합니다.

실제로 contains는 java 1.5 버전부터 나왔습니다.