두 문자열을 비교하는 방법 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 라이브러리는 문자열을 비교하는 다양한 방법을 제공합니다.