Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 문자열 비교하기: equals()와 equalsIgnoreCase() 메서드 완벽 가이드

자바(Java)에서 문자열(String)은 텍스트 데이터를 저장하는 데 사용되는 자료형입니다. 문자열을 다루다 보면 두 문자열이 서로 같은지 비교해야 하는 상황을 자주 마주하게 됩니다.

바로 이럴 때 자바의 equals() 메서드와 equalsIgnoreCase() 메서드가 유용합니다. equals()는 두 문자열이 동일한지 확인하고, equalsIgnoreCase()는 대소문자를 구분하지 않고 두 문자열이 같은지 비교합니다.

이 글에서는 예제 코드와 함께 자바에서 문자열을 비교하는 equals()equalsIgnoreCase() 메서드의 사용법을 자세히 알아보겠습니다. 글을 끝까지 읽으면 두 메서드를 능숙하게 활용할 수 있게 될 것입니다.

자바 문자열(String) 기본 개념

문자열은 텍스트를 저장하는 자료형으로, 영문자·숫자·기호·공백 등을 모두 포함할 수 있습니다. 예를 들어 재단사 가게의 고객 이름이나 자재 공급업체의 주소 같은 정보가 문자열로 저장될 수 있습니다.

자바에서 문자열은 큰따옴표(" ")로 묶인 문자들의 나열로 선언합니다. 아래는 자바 문자열 선언 예시입니다:

String favoriteCoffeeShop = "Central Perk";

위 예제에서는 favoriteCoffeeShop이라는 변수를 선언하고, 여기에 "Central Perk"라는 값을 할당했습니다.

자바의 문자열 객체는 불변(immutable)입니다. 즉, 한 번 생성된 문자열은 변경할 수 없으며, 다른 문자열과 비교하려면 equals() 메서드를 사용해야 합니다. 문자열의 기본 개념을 살펴봤으니 이제 본격적으로 equals()equalsIgnoreCase() 메서드에 대해 알아보겠습니다.

자바 String equals() 메서드

자바의 equals() 메서드는 두 문자열 객체를 비교하여 내용이 동일한지 확인하는 데 사용됩니다.

equals() 메서드는 비교 대상이 되는 문자열 하나를 매개변수로 받습니다. 기본 문법은 다음과 같습니다:

stringName.equals(string2Name);

각 요소의 의미는 다음과 같습니다:

  • stringName: 비교 기준이 되는 원본 문자열
  • equals(): 두 문자열을 비교하는 메서드
  • string2Name: stringName과 비교할 대상 문자열

equals() 메서드는 두 문자열이 같은지 여부에 따라 boolean 값(true 또는 false)을 반환합니다. 두 문자열이 동일하면 true, 그렇지 않으면 false가 반환됩니다.

주의할 점은 equals() 메서드가 대소문자를 구분한다는 것입니다. 따라서 두 문자열이 같은 문자를 포함하더라도 대소문자가 다르면 false를 반환합니다.

equals() 메서드 활용 예제

호텔을 운영하면서 체크인 절차를 간소화하는 프로그램을 작성한다고 가정해 보겠습니다. 고객이 체크인할 때는 이름과 예약 번호를 제시해야 하며, 프로그램은 고객이 제시한 예약 번호와 시스템에 저장된 예약 번호를 비교해 고객의 신원을 확인합니다.

다음 코드를 사용해 저장된 예약 번호와 고객이 제공한 예약 번호를 비교할 수 있습니다:

class Main {
	public static void main(String args[]) {
		String onFileBookingReference = "#ST2920198";
		String customerGivenBookingReference = "#ST2920198";

		boolean areEqual = onFileBookingReference.equals(customerGivenBookingReference);

		if (areEqual == true) {
			System.out.println("This booking is confirmed.");
		} else {
			System.out.println("The booking reference provided does not match the one on-file.");
		}
	}
}

코드 실행 결과:

This booking is confirmed.

코드를 단계별로 살펴보겠습니다:

  1. 고객 이름과 연결된 예약 번호를 저장하는 변수 onFileBookingReference를 선언합니다.
  2. 체크인 카운터에서 고객이 제시한 예약 번호를 저장하는 변수 customerGivenBookingReference를 선언합니다.
  3. equals() 메서드로 두 예약 번호가 일치하는지 확인하고, 그 결과를 areEqual 변수에 할당합니다.
  4. if 문으로 areEqual이 true인지 검사합니다.
    • true이면 "This booking is confirmed."(예약이 확정되었습니다)라는 메시지를 콘솔에 출력합니다.
    • false이면 "The booking reference provided does not match the one on-file."(제공된 예약 번호가 저장된 번호와 일치하지 않습니다)라는 메시지를 출력합니다.

이 예제에서 고객은 올바른 예약 번호를 제시했기 때문에 프로그램이 예약을 정상적으로 확정했습니다.

자바 String equalsIgnoreCase() 메서드

equalsIgnoreCase() 메서드는 대소문자를 무시하고 두 문자열을 비교할 때 사용됩니다. 사용 문법은 equals() 메서드와 동일합니다:

stringName.equalsIgnoreCase(string2Name);

그럼 실제 예제를 통해 이 메서드가 어떻게 동작하는지 살펴보겠습니다.

이번에는 고객이 제시한 예약 번호에 연결된 이름과 고객이 말한 이름이 일치하는지 확인하는 프로그램을 작성한다고 가정해 보겠습니다. 이때 대소문자 입력 오류 때문에 체크인 담당자가 예약을 찾지 못하는 일이 없도록, 대소문자를 구분하지 않는 비교를 수행해야 합니다.

다음 코드로 고객 이름과 예약 번호에 연결된 이름을 비교할 수 있습니다:

class Main {
	public static void main(String args[]) {
		String onFileName = "Gregory Lamont";
		String customerName = "gregory lamont";

		boolean areEqual = onFileName.equalsIgnoreCase(customerName);

		if (areEqual == true) {
			System.out.println("This booking is confirmed.");
		} else {
			System.out.println("The customer name provided does not match the one on-file.");
		}
	}
}

코드 실행 결과:

This booking is confirmed.

시스템에 저장된 고객 이름은 Gregory Lamont지만, 체크인 담당자가 입력한 이름은 gregory lamont입니다. 만약 equals() 메서드를 사용했다면 두 문자열의 대소문자가 다르기 때문에 서로 다른 문자열로 판단되었을 것입니다.

하지만 이 예제에서는 문자열의 대소문자를 무시하고 비교하는 equalsIgnoreCase() 메서드를 사용했기 때문에 두 이름이 같은 것으로 인식되어 예약이 정상적으로 확인되었습니다.

마무리

정리하면, equals() 메서드는 두 문자열이 대소문자까지 완전히 동일한지 확인할 때 사용하고, equalsIgnoreCase() 메서드는 대소문자와 관계없이 두 문자열이 같은지 확인할 때 사용합니다.

이 글에서는 두 가지 예제를 통해 자바에서 문자열을 비교하는 equals()equalsIgnoreCase() 메서드의 사용법을 알아보았습니다. 이제 여러분도 전문가처럼 자바에서 문자열을 자유롭게 비교할 수 있을 것입니다!