두 문자열을 비교하는 방법 Java

문자열을 비교하는 방법 Java

Java 두 문자열을 비교하는 데 활용할 수 있는 다양한 방법을 제공합니다. Java. 문자열 비교 Java 일련의 문자를 문자열과 일치시키는 기능입니다.

문자열을 비교하는 방법을 배우려면 Java다음 클래스에서 제공하는 메서드를 사용할 수 있습니다.

  • 문자열 클래스 Java.lang 패키지.
  • 객체 클래스의 Java.util 패키지.
  • org.apache.commons.lang3 패키지의 StringUtils 클래스.

이들의 대부분은 Java 문자열 비교 메소드에는 대소문자를 무시하는 솔루션이 있습니다. 이에 Java 이 튜토리얼에서는 두 문자열을 비교하는 데 사용할 수 있는 다양한 방법을 배우게 됩니다.

방법 1: 문자열 equals() 메서드

The Java 끈 같음() 메서드 두 개의 문자열 객체를 비교하여 문자열 값이 같은지 확인합니다.

구문 :

public boolean equals(Object anObject)

equals() 메소드 매개변수:

anObject – 문자열 비교를 위한 인수 문자열입니다.

equals() 메소드 반환 유형

  • 제공된 문자열 리터럴이 첫 번째 문자열과 동일한 경우 true를 반환합니다.
  • 첫 번째 문자열이 인수 문자열과 동일하지 않으면 false를 반환합니다.

예:

public class CompareTwoStrings {
 public static void main(String[] args) {
   String stringOne = "Guru99";
   String stringTwo = "Guru99";
   System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
   String stringThree = "GURU99";
   System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
  }
}

예상 출력 :

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

설명 :

  • 지정된 개체의 대소문자가 다르기 때문에 마지막 출력에서 ​​false가 반환되었습니다.

주의 사항: 대소문자를 구분하는 문자열 비교를 위해 문자열 같음 메서드를 사용합니다. 문자열 개체를 다른 문자열 값과 비교하려면 "equalsIgnoreCase" 메서드를 사용하세요.

방법 2: 객체의 equals() 메서드

The Java 객체가 같음() 이 메서드는 두 개의 문자열 객체를 비교하여 두 객체가 같은 값을 가지고 있는지 확인합니다.

구문 :

public static boolean equals(Object a, Object b)

equals() 메소드 매개변수

a – 첫 번째 문자열 객체에 대한 인수 문자열입니다.

b – 두 번째 문자열 객체에 대한 인수 문자열입니다.

equals() 메소드 반환 유형

  • 문자열 리터럴이 동일하면 true를 반환합니다. 두 인수에 null 값을 전달하면 true가 반환됩니다.
  • 문자열 리터럴이 동일하지 않으면 false를 반환합니다.

예:

import java.util.Objects;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
        String stringThree = null;
        String stringFour = null;
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
    }
}

출력:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

설명 :

이 예에서는 비교된 문자열이 동일하므로 출력이 true라는 부울 값임을 알 수 있습니다.

방법 3: 문자열 CompareTo() 메서드

The Java 문자열 비교() 방법은 두 개의 문자열을 알파벳 순서로 비교합니다. 일반적으로 사전식 순서라고 합니다.

구문 :

public int compareTo(String str)

CompareTo() 메서드 매개변수

str – 현재 문자열과 비교할 문자열입니다.

CompareTo() 메서드가 반환됩니다.

  • 0 – 지정된 객체가 현재 문자열과 같은 경우 XNUMX을 반환합니다.
  • < 0 – 이 문자열이 지정된 개체보다 작은 경우 XNUMX보다 작은 숫자를 반환합니다.
  • > 0 – 이 문자열이 제공된 문자열을 초과하는 경우 XNUMX보다 큰 숫자를 반환합니다.

예:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
        String stringThree = "GURU99";
		// u = 117, U = 85, result = 117-85 = 32
        System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
    }
}

예상 출력 :

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

설명 :

첫 번째 문자열과 두 번째 문자열이 동일하므로 첫 번째 결과는 XNUMX 값을 반환합니다.

두 번째 결과는 문자가 다르기 때문에 XNUMX라는 값을 반환합니다.

참고 : 대소문자를 무시하려면 "compareToIgnoreCase" 메소드를 사용할 수 있습니다.

방법 4: StringUtils equals() 메서드

The Java StringUtils는 같음() 이 방법은 두 문자 시퀀스의 동일성을 비교합니다.

프로그램에 "org.apache.commons.lang3" 라이브러리를 추가했는지 확인하세요. 이렇게 하면 StringUtil 메서드를 사용하여 문자열을 비교할 수 있습니다.

Maven 프로젝트의 경우 이것을 사용하십시오 안내 프로젝트에 라이브러리를 추가합니다.

그러나 빌드 도구 없이 라이브러리를 추가하려면 다음을 사용하십시오. 안내.

구문 :

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() 메서드 매개변수

  • cs1 – 첫 번째 인수에 대한 문자 시퀀스입니다.
  • cs2 – 두 번째 인수에 대한 문자 시퀀스입니다.

StringUtils는 equals() 메소드를 반환합니다.

  • 문자열 비교가 동일하면 true를 반환합니다. 두 인수에 null 값을 전달하는 경우 적용됩니다.
  • 문자열 비교가 동일하지 않으면 false를 반환합니다.

예:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
    }
}

출력:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

설명 :

첫 번째 문자열과 두 번째 문자열의 내용이 동일하므로 결과는 true를 반환합니다.

대소문자를 무시하려면 "equalsIgnoreCase" 메소드를 사용할 수 있습니다.

방법 5: StringUtils equalsAny() 방법

The Java StringUtils는 Any()와 같습니다. 메서드는 인수에 문자열이 있는지 확인합니다.

구문 :

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

StringUtils는 equalsAny() 메소드 매개변수

  • 문자열 – 첫 번째 인수의 문자열 값입니다. 인수는 널값을 가질 수도 있습니다.
  • searchStrings – 첫 번째 인수 문자열이 있는지 확인하기 위한 메서드의 문자열 인수 집합입니다.

StringUtils는 equalsAny() 메소드를 반환합니다.

  • 일치하는 문자열이 검색 문자열의 가변 개수에 존재하는 경우 true를 반환합니다. 이는 두 인수가 모두 null인 경우에 적용됩니다.
  • 일치시킬 문자열이 검색 문자열의 가변 개수에 있는 어떤 문자열과도 일치하지 않는 경우 false를 반환합니다.

예:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String[] stringTwo = new String[] {
            "Guru99",
            "JavaGuru99"
        };
        System.out.println("is Guru99 available: " +
            StringUtils.equalsAny(stringOne, stringTwo));
        String[] stringThree = new String[] {
            "GURU99",
            "JavaGuru99"
        };
        System.out.println("is GURU99 available: " +
            StringUtils.equalsAny(stringOne, stringThree));
    }
}

출력:

is Guru99 available: true
is GURU99 available: false

설명 :

첫 번째 문자열과 두 번째 문자열의 내용이 동일하므로 결과는 true를 반환합니다. 대소문자를 무시하려면 "equalsAnyIgnoreCase" 메서드를 사용할 수 있습니다.

방법 6: == 연산자 사용

문자열의 == 연산자는 객체 참조가 동일한 주소를 가지고 있는지 확인합니다.

예:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
    }
}

예상 출력 :

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

설명 :

  • 첫 번째 결과는 true라는 부울 값을 반환합니다. 동일한 내용을 가진 문자열은 동일한 문자열 풀에 추가되므로 문자열은 하나의 주소를 공유합니다.
  • 두 번째 결과는 false라는 부울 값을 반환합니다. 개체의 내용이 다르므로 다른 문자열 풀이 생성됩니다. 이는 문자열에 별도의 개체 참조가 있음을 의미합니다. 따라서 출력은 거짓입니다.

방법 7: 두 문자열을 비교하는 사용자 정의 방법 만들기 Java

사전식 순서를 사용하여 두 문자열을 비교하는 메서드를 만듭니다.

구문 :

public static int compareTwoStrings(String str1, String str2)

사용자 정의 방법 매개변수

  • str1 – 비교할 문자열입니다.
  • str2 – 비교할 문자열입니다.

사용자 정의 메소드 반환

  • 0 – 첫 번째 문자열이 두 번째 문자열과 같으면 XNUMX을 반환합니다.
  • < 0 – 첫 번째 문자열이 두 번째 문자열보다 작은 경우 XNUMX보다 작은 숫자를 반환합니다.
  • > 0 – 첫 번째 문자열이 두 번째 문자열보다 큰 경우 XNUMX보다 큰 숫자를 반환합니다.

예:

public class CompareTwoStrings {
    public static int compareTwoStrings(String stringOne, String stringTwo) {
        int lengthOfStringOne = stringOne.length();
        int lengthOfStringTwo = stringTwo.length();
        int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
        for (int i = 0; i < minStringLength; i++) {
            char stringOneCharValue = stringOne.charAt(i);
            char stringTwoCharValue = stringTwo.charAt(i);
            if (stringOneCharValue != stringTwoCharValue) {
                return stringOneCharValue - stringTwoCharValue;
            }
        }
        if (lengthOfStringOne != lengthOfStringTwo) {
            return lengthOfStringOne - lengthOfStringTwo;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
    }
}

예상 출력 :

is Guru99 equal to Guru99: 0

설명 :

결과는 XNUMX 값을 반환했습니다. 이는 사용자 정의 함수가 예상대로 작동하고 있음을 의미합니다.

슬립폼 공법 선택시 고려사항

The Java 두 문자열을 비교하는 방법은 다음 요인에 따라 달라집니다.

  • 귀하의 방법을 통제하고 싶습니다. 이 경우 사용자 정의 방법을 생성하십시오.
  • 레거시 코드를 사용할 수 없습니다. ~와 함께 Java 6 이하.
  • 최적의 성능을 갖는 방법입니다.
  • 작업 중인 데이터 유형입니다. 예를 들어, 가변 인수 세트에서 문자열을 일치시킵니다.
  • 아웃소싱 라이브러리에서 제공하는 기능입니다. 예를 들어 StringUtils 라이브러리는 문자열을 비교하는 다양한 방법을 제공합니다.