Java에서 문자열 비교

K. Macharia 2023년10월12일
  1. compareTo()메서드를 사용하여 Java에서 문자열 비교
  2. 같음==연산자 방법
  3. equals()메서드
  4. equals()메서드 대소 문자 구분
  5. contentEquals()메소드
Java에서 문자열 비교

거의 모든 Java 개발자는 어느 시점에서 애플리케이션의 논리를 완성하기 위해 두 문자열을 비교해야합니다. 문자열 변수는 문자 모음입니다. 문자열로 가능한 비교 연산을 이해하려면 먼저 문자열의 속성을 이해해야합니다.

  1. 문자열은 변경할 수 없습니다. 그것은 그들이 성장할 수 없다는 것을 의미하며, 현이 변경되면 새로운 현이 형성됩니다. 이는 변경 불가능한 문자 배열에 의해 내부적으로 지원되기 때문입니다.
  2. 문자열이 생성되었다고 말할 때마다 서로 다른 메모리 영역에 배치 된 두 개의 객체가 생성됩니다. 하나는 힙 영역에 생성되고 두 번째는 문자열 상수 풀에 생성됩니다. 문자열 참조는 컴퓨터가 힙 영역 개체를 가리 킵니다.

예를 들어

String mystring = "World"

이 경우 mystringWorld문자열이 저장된 힙 영역을 가리 킵니다.

다음은 Java에서 문자열을 비교하는 데 사용되는 네 가지 방법이며이 기사에서 자세히 설명합니다.

  1. compareTo()메서드
  2. 같음==연산자
  3. equals()메서드
  4. contentEquals()메소드

compareTo()메서드를 사용하여 Java에서 문자열 비교

두 문자열을 사전 식으로 비교합니다. 먼저 문자열의 각 문자에 유니 코드 값을 할당 한 다음 문자열을 비교하여 작동합니다. 이 프로세스는 결과를 0, 양수 또는 음수로 반환합니다.

  1. 두 개의 비교 된 문자열이 사 전적으로 동일하면 결과는 0입니다.
  2. 첫 번째 문자열이 두 번째 문자열보다 크면 결과는 양수입니다.
  3. 두 번째 문자열이 첫 번째 문자열보다 크면 결과는 음수입니다.

compareTo()메서드를 사용하는 방법에는 두 가지가 있습니다.

두 문자열 리터럴 비교

string1과 string2를 비교해 보겠습니다. 이 두 문자열을 비교하여 얻은 결과는int 유형입니다. 예:

public class CompareToCode {
  public static void main(String args[]) {
    String string1 = "now";
    String string2 = "now";
    int result = string1.compareTo(string2);
    System.out.println(result);
  }
}

출력:

0

문자열과 객체 비교

compareTo()메서드를 사용하면 참조되지 않은 객체를 문자열과 비교할 수도 있습니다. 예:

public class CompareTo {
  public static void main(String args[]) {
    String string1 = "now";
    int result = string1.compareTo("now");
    System.out.println(result);
  }
}

출력:

0

compareTo()대소 문자 구분

compareTo()메서드는 대소 문자를 구분합니다. 즉, 두 개의 문자열이 동일하더라도 균일하지 않으면 서로 다른 것으로 표시됩니다. 예:

public class CompareTo {
  public static void main(String args[]) {
    String string1 = "hello";
    String string2 = "HELLO";
    int result = string1.compareTo(string2);
    System.out.println(result);
  }
}

출력:

-32

세계helloHELLO는 위와 다르게 처리되므로 결과는 -32입니다.

그러나이 문자열 클래스의 다른 메서드는 compareToIgnoreCase()와 같은 대소 문자 구분을 무시합니다. 예:

public class CompareToIgnoreCase {
  public static void main(String args[]) {
    String string1 = "hello";
    String string2 = "HELLO";
    int result = string1.compareToIgnoreCase(string2);
    System.out.println(result);
  }
}

출력:

0

같음==연산자 방법

두 객체가 같은 메모리 위치에 있는지 비교하는 Java 문자열 비교 방법입니다. 예:

public class EqualityOperator {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("Wow");
    System.out.println(oneS == twoS);
  }
}

출력:

false

==연산자는 oneS와 twoS 객체를 비교하여 동일한 지 확인합니다. 두 문자열,oneStwoS는 서로 다른 참조이므로 false를 반환합니다. oneStwoS는 서로 다른 두 개체입니다. 그러나 둘 다 동일한 가치를 가지고 있습니다.

equals()메서드

Java에서 두 문자열을 값을 기준으로 비교하는 데 사용되는 방법입니다. 이 메서드의 출력은 true 또는 false입니다. 비교되는 문자열이 값과 같지 않으면 메서드는 false를 반환합니다. 비교되는 문자열이 같으면 메서드는 true를 반환합니다. 예를 들어

public class Equals {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("Wow");
    System.out.println(oneS.equals(twoS));
  }
}

출력:

true

equals()메서드 대소 문자 구분

equals()메서드는 대소 문자를 구분하므로 동일한 단어가 다른 단어와 다르게 캡으로 표시됩니다. 예를 들면 :

public class Equals {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("WOW");
    System.out.println(oneS.equals(twoS));
  }
}

출력:

false

위의 경우equals()메서드를 사용하여WOW와 비교 한wow는 false를 반환합니다.

그러나equals()메서드를 사용하고 대소 문자 구분을 고려하지 않으려면equalsToIgnoreCase()메서드를 사용합니다. 위의 예에서equalsIgnoreCase()는 true를 반환합니다.

public class EqualsIgnorecase {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("WOW");
    System.out.println(oneS.equalsIgnoreCase(twoS));
  }
}

출력:

true

contentEquals()메소드

이것은 또한 문자열 버퍼와 문자열을 비교하고 false 또는 true를 리턴하는 Java 문자열 비교 메소드입니다. 문자열이 비교 대상 문자열 버퍼와 일치하면 메서드는 true를 반환합니다. 문자열이 비교되는 문자열 버퍼와 일치하지 않으면 메서드는 false를 반환합니다.

예:

public class ContentEquals {
  public static void main(String args[]) {
    String firstS = new String("Here we are");
    StringBuffer secondS = new StringBuffer("Here we are");
    System.out.println(firstS.contentEquals(secondS));
  }
}

출력:

true

관련 문장 - Java String