[Java] 6.2.4 String 클래스 멤버 중에 판별에 사용하는 멤버 메서드

Java 언어의 String 클래스의 멤버 중에 판별에 자주 사용하는 메서드로 다음과 같습니다.

boolean contains(CharSequence cs)
boolean endsWith(String str)
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean startsWith(String prefix)

먼저 contains 메서드는 문자 시퀀스를 포함하는지 판별할 때 사용합니다.

boolean contains(CharSequence cs)

다음은 문자 시퀀스를 포함하는지 판별하는 예제 코드입니다.

//문자 시퀀스를 포함하는지 판별하는 예
public class Program {
	public static void main(String[] args){
		String s1 = "Here is ehpub.co.kr!";
		CharSequence cs1 = "is";
		CharSequence cs2 = "are";
		System.out.println(s1.contains(cs1));
		System.out.println(s1.contains(cs2));
	}
}

실행 결과

true
false

String 클래스에는 특정 문자열의 전위나 후위에 부분 문자열이 있는지 판별하는 메서드를 제공합니다.

boolean startsWith(String prefix)
boolean endsWith(String str)

다음의 예는 특정 문자열의 전위나 후위에 부분 문자열이 있는지 확인하는 코드입니다.

//전위나 후위에 부분 문자열이 있는지 확인하는 예
public class Program {
	public static void main(String[] args){
		String str = "Here is ehpub.co.kr!";
		String ex1 = "Here";
		String ex2 = "kr!";
				
		if(str.startsWith(ex1))
		{
			System.out.println(ex1+"으로 시작");
		}
		
		if(str.startsWith(ex2))
		{
			System.out.println(ex2+"으로 시작");
		}
		
		if(str.endsWith(ex1))
		{
			System.out.println(ex1+"으로 끝남");
		}
		
		if(str.endsWith(ex2))
		{
			System.out.println(ex2+"으로 끝남");
		}		
	}
}

실행 결과

Here으로 시작
kr!으로 끝남

그리고 앞에서 문자열을 구성하는 내용인 문자 집합체가 같은지 판별할 때 equals 메서드를 사용한다고 하였습니다. 그런데 대소문자 여부를 따지지 않고 판별을 하고 싶을 때도 있습니다. 이럴 때는 equaIsIgnoreCase 메서드를 사용합니다.

boolean equals(Object obj)
boolean equalsIgnoreCase(String str)

다음은 equals와 equalsIsIgnoreCase 메서드를 사용하는 예입니다.

//대소문자 구분 혹은 구분없이 문자열 비교
public class Program {
	public static void main(String[] args){
		String str1 = new String("I am a boy.");
		String str2 = new String("i am a Boy.");
		
		if(str1.equalsIgnoreCase(str2)){
			if(str1.equals(str2)){
				System.out.println("같습니다.");
			}
			else{
				System.out.println("대소문자만");
			}
		}
		else{
			System.out.println("서로 다릅니다.");
		}				
	}
}

실행 결과

대소문자만