logo

자바 문자열 비교()

그만큼 Java 문자열 클래스 CompareTo() 메소드는 주어진 문자열을 사전순으로 현재 문자열과 비교합니다. 양수, 음수 또는 0을 반환합니다.

문자열에 있는 각 문자의 유니코드 값을 기준으로 문자열을 비교합니다.

첫 번째 문자열이 두 번째 문자열보다 사전순으로 크면 양수(문자 값의 차이)를 반환합니다. 첫 번째 문자열이 사전순으로 두 번째 문자열보다 작으면 음수를 반환하고, 첫 번째 문자열이 사전순으로 두 번째 문자열과 같으면 0을 반환합니다.

 if s1 &gt; s2, it returns positive number if s1 <s2, 0 it returns negative number if s1="=" s2, < pre> <h3>Syntax</h3> <pre> public int compareTo(String anotherString) </pre> <p>The method accepts a parameter of type String that is to be compared with the current string.</p> <p>It returns an integer value. It throws the following two exceptions:</p> <p> <strong>ClassCastException:</strong> If this object cannot get compared with the specified object.</p> <p> <strong>NullPointerException:</strong> If the specified object is null.</p> <h2>Internal implementation</h2> <pre> int compareTo(String anotherString) { int length1 = value.length; int length2 = anotherString.value.length; int limit = Math.min(length1, length2); char v1[] = value; char v2[] = anotherString.value; int i = 0; while (i <limit) { char ch1="v1[i];" ch2="v2[i];" if (ch1 !="ch2)" return - ch2; } i++; length1 length2; < pre> <h2>Java String compareTo() Method Example</h2> <p> <strong>FileName:</strong> CompareToExample.java</p> <pre> public class CompareToExample{ public static void main(String args[]){ String s1=&apos;hello&apos;; String s2=&apos;hello&apos;; String s3=&apos;meklo&apos;; String s4=&apos;hemlo&apos;; String s5=&apos;flag&apos;; System.out.println(s1.compareTo(s2));//0 because both are equal System.out.println(s1.compareTo(s3));//-5 because &apos;h&apos; is 5 times lower than &apos;m&apos; System.out.println(s1.compareTo(s4));//-1 because &apos;l&apos; is 1 times lower than &apos;m&apos; System.out.println(s1.compareTo(s5));//2 because &apos;h&apos; is 2 times greater than &apos;f&apos; }} </pre> <span> Test it Now </span> <p> <strong>Output:</strong> </p> <pre> 0 -5 -1 2 </pre> <h2>Java String compareTo(): empty string</h2> <p>When we compare two strings in which either first or second string is empty, the method returns the length of the string. So, there may be two scenarios:</p> <ul> <li>If <strong>first</strong> string is an empty string, the method returns a <strong>negative</strong> </li> <li>If <strong>second</strong> string is an empty string, the method returns a <strong>positive</strong> number that is the length of the first string.</li> </ul> <p> <strong>FileName:</strong> CompareToExample2.java</p> <pre> public class CompareToExample2{ public static void main(String args[]){ String s1=&apos;hello&apos;; String s2=&apos;&apos;; String s3=&apos;me&apos;; System.out.println(s1.compareTo(s2)); System.out.println(s2.compareTo(s3)); }} </pre> <span> Test it Now </span> <p> <strong>Output:</strong> </p> <pre> 5 -2 </pre> <h3>Java String compareTo(): case sensitive</h3> <p>To check whether the compareTo() method considers the case sensitiveness of characters or not, we will make the comparison between two strings that contain the same letters in the same sequence.</p> <p>Suppose, a string having letters in uppercase, and the second string having the letters in lowercase. On comparing these two string, if the outcome is 0, then the compareTo() method does not consider the case sensitiveness of characters; otherwise, the method considers the case sensitiveness of characters.</p> <p> <strong>FileName:</strong> CompareToExample3.java</p> <pre> public class CompareToExample3 { // main method public static void main(String argvs[]) { // input string in uppercase String st1 = new String(&apos;INDIA IS MY COUNTRY&apos;); // input string in lowercase String st2 = new String(&apos;india is my country&apos;); System.out.println(st1.compareTo(st2)); } } </pre> <p> <strong>Output:</strong> </p> <pre> -32 </pre> <p> <strong>Conclusion:</strong> It is obvious by looking at the output that the outcome is not equal to zero. Hence, the compareTo() method takes care of the case sensitiveness of characters.</p> <h3>Java String compareTo(): ClassCastException</h3> <p>The <strong>ClassCastException</strong> is thrown when objects of incompatible types get compared. In the following example, we are comparing an object of the ArrayList (al) with a string literal (&apos;Sehwag&apos;).</p> <p> <strong>FileName:</strong> CompareToExample4.java</p> <pre> // import statement import java.util.*; class Players { private String name; // constructor of the class public Players(String str) { name = str; } } public class CompareToExample4 { // main method public static void main(String[] args) { Players ronaldo = new Players(&apos;Ronaldo&apos;); Players sachin = new Players(&apos;Sachin&apos;); Players messi = new Players(&apos;Messi&apos;); ArrayList al = new ArrayList(); al.add(ronaldo); al.add(sachin); al.add(messi); // performing binary search on the list al Collections.binarySearch(al, &apos;Sehwag&apos;, null); } } </pre> <p> <strong>Output:</strong> </p> <pre> Exception in thread &apos;main&apos; java.lang.ClassCastException: class Players cannot be cast to class java.lang.Comparable </pre> <h3>Java String compareTo(): NullPointerException</h3> <p>The NullPointerException is thrown when a null object invokes the compareTo() method. Observe the following example.</p> <p> <strong>FileName:</strong> CompareToExample5.java</p> <pre> public class CompareToExample5 { // main method public static void main(String[] args) { String str = null; // null is invoking the compareTo method. Hence, the NullPointerException // will be raised int no = str.compareTo(&apos;India is my country.&apos;); System.out.println(no); } } </pre> <p> <strong>Output:</strong> </p> <pre> Exception in thread &apos;main&apos; java.lang.NullPointerException at CompareToExample5.main(CompareToExample5.java:9) </pre> <hr></limit)></pre></s2,>

이 메소드는 현재 문자열과 비교할 String 유형의 매개변수를 승인합니다.

정수 값을 반환합니다. 다음 두 가지 예외가 발생합니다.

클래스캐스트예외: 이 개체를 지정된 개체와 비교할 수 없는 경우.

NullPointer예외: 지정된 객체가 null인 경우.

재스민 데이비스의 어린시절

내부 구현

 int compareTo(String anotherString) { int length1 = value.length; int length2 = anotherString.value.length; int limit = Math.min(length1, length2); char v1[] = value; char v2[] = anotherString.value; int i = 0; while (i <limit) { char ch1="v1[i];" ch2="v2[i];" if (ch1 !="ch2)" return - ch2; } i++; length1 length2; < pre> <h2>Java String compareTo() Method Example</h2> <p> <strong>FileName:</strong> CompareToExample.java</p> <pre> public class CompareToExample{ public static void main(String args[]){ String s1=&apos;hello&apos;; String s2=&apos;hello&apos;; String s3=&apos;meklo&apos;; String s4=&apos;hemlo&apos;; String s5=&apos;flag&apos;; System.out.println(s1.compareTo(s2));//0 because both are equal System.out.println(s1.compareTo(s3));//-5 because &apos;h&apos; is 5 times lower than &apos;m&apos; System.out.println(s1.compareTo(s4));//-1 because &apos;l&apos; is 1 times lower than &apos;m&apos; System.out.println(s1.compareTo(s5));//2 because &apos;h&apos; is 2 times greater than &apos;f&apos; }} </pre> <span> Test it Now </span> <p> <strong>Output:</strong> </p> <pre> 0 -5 -1 2 </pre> <h2>Java String compareTo(): empty string</h2> <p>When we compare two strings in which either first or second string is empty, the method returns the length of the string. So, there may be two scenarios:</p> <ul> <li>If <strong>first</strong> string is an empty string, the method returns a <strong>negative</strong> </li> <li>If <strong>second</strong> string is an empty string, the method returns a <strong>positive</strong> number that is the length of the first string.</li> </ul> <p> <strong>FileName:</strong> CompareToExample2.java</p> <pre> public class CompareToExample2{ public static void main(String args[]){ String s1=&apos;hello&apos;; String s2=&apos;&apos;; String s3=&apos;me&apos;; System.out.println(s1.compareTo(s2)); System.out.println(s2.compareTo(s3)); }} </pre> <span> Test it Now </span> <p> <strong>Output:</strong> </p> <pre> 5 -2 </pre> <h3>Java String compareTo(): case sensitive</h3> <p>To check whether the compareTo() method considers the case sensitiveness of characters or not, we will make the comparison between two strings that contain the same letters in the same sequence.</p> <p>Suppose, a string having letters in uppercase, and the second string having the letters in lowercase. On comparing these two string, if the outcome is 0, then the compareTo() method does not consider the case sensitiveness of characters; otherwise, the method considers the case sensitiveness of characters.</p> <p> <strong>FileName:</strong> CompareToExample3.java</p> <pre> public class CompareToExample3 { // main method public static void main(String argvs[]) { // input string in uppercase String st1 = new String(&apos;INDIA IS MY COUNTRY&apos;); // input string in lowercase String st2 = new String(&apos;india is my country&apos;); System.out.println(st1.compareTo(st2)); } } </pre> <p> <strong>Output:</strong> </p> <pre> -32 </pre> <p> <strong>Conclusion:</strong> It is obvious by looking at the output that the outcome is not equal to zero. Hence, the compareTo() method takes care of the case sensitiveness of characters.</p> <h3>Java String compareTo(): ClassCastException</h3> <p>The <strong>ClassCastException</strong> is thrown when objects of incompatible types get compared. In the following example, we are comparing an object of the ArrayList (al) with a string literal (&apos;Sehwag&apos;).</p> <p> <strong>FileName:</strong> CompareToExample4.java</p> <pre> // import statement import java.util.*; class Players { private String name; // constructor of the class public Players(String str) { name = str; } } public class CompareToExample4 { // main method public static void main(String[] args) { Players ronaldo = new Players(&apos;Ronaldo&apos;); Players sachin = new Players(&apos;Sachin&apos;); Players messi = new Players(&apos;Messi&apos;); ArrayList al = new ArrayList(); al.add(ronaldo); al.add(sachin); al.add(messi); // performing binary search on the list al Collections.binarySearch(al, &apos;Sehwag&apos;, null); } } </pre> <p> <strong>Output:</strong> </p> <pre> Exception in thread &apos;main&apos; java.lang.ClassCastException: class Players cannot be cast to class java.lang.Comparable </pre> <h3>Java String compareTo(): NullPointerException</h3> <p>The NullPointerException is thrown when a null object invokes the compareTo() method. Observe the following example.</p> <p> <strong>FileName:</strong> CompareToExample5.java</p> <pre> public class CompareToExample5 { // main method public static void main(String[] args) { String str = null; // null is invoking the compareTo method. Hence, the NullPointerException // will be raised int no = str.compareTo(&apos;India is my country.&apos;); System.out.println(no); } } </pre> <p> <strong>Output:</strong> </p> <pre> Exception in thread &apos;main&apos; java.lang.NullPointerException at CompareToExample5.main(CompareToExample5.java:9) </pre> <hr></limit)>
지금 테스트해보세요

산출:

 0 -5 -1 2 

Java 문자열 CompareTo(): ​​빈 문자열

첫 번째 또는 두 번째 문자열이 비어 있는 두 문자열을 비교할 때 메서드는 문자열의 길이를 반환합니다. 따라서 두 가지 시나리오가 있을 수 있습니다.

  • 만약에 첫 번째 문자열이 빈 문자열인 경우 메서드는 다음을 반환합니다. 부정적인
  • 만약에 두번째 문자열이 빈 문자열인 경우 메서드는 다음을 반환합니다. 긍정적인 첫 번째 문자열의 길이인 숫자입니다.

파일 이름: CompareToExample2.java

 public class CompareToExample2{ public static void main(String args[]){ String s1=&apos;hello&apos;; String s2=&apos;&apos;; String s3=&apos;me&apos;; System.out.println(s1.compareTo(s2)); System.out.println(s2.compareTo(s3)); }} 
지금 테스트해보세요

산출:

 5 -2 

Java 문자열 CompareTo(): ​​대소문자 구분

CompareTo() 메서드가 문자의 대소문자 구분을 고려하는지 여부를 확인하기 위해 동일한 문자를 포함하는 두 문자열을 동일한 순서로 비교합니다.

대문자로 된 문자를 포함하는 문자열과 소문자로 된 문자를 포함하는 두 번째 문자열을 가정해 보겠습니다. 이 두 문자열을 비교할 때 결과가 0이면 CompareTo() 메서드는 문자의 대소문자 구분을 고려하지 않습니다. 그렇지 않은 경우 메서드는 문자의 대소문자 구분을 고려합니다.

파일 이름: CompareToExample3.java

 public class CompareToExample3 { // main method public static void main(String argvs[]) { // input string in uppercase String st1 = new String(&apos;INDIA IS MY COUNTRY&apos;); // input string in lowercase String st2 = new String(&apos;india is my country&apos;); System.out.println(st1.compareTo(st2)); } } 

산출:

 -32 

결론: 출력을 보면 결과가 0이 아니라는 것이 분명합니다. 따라서 CompareTo() 메서드는 문자의 대소문자 구분을 처리합니다.

자바 문자열 CompareTo(): ​​ClassCastException

그만큼 클래스캐스트예외 호환되지 않는 유형의 객체가 비교되면 발생합니다. 다음 예에서는 ArrayList의 객체(al)를 문자열 리터럴('Sehwag')과 비교합니다.

파일 이름: CompareToExample4.java

 // import statement import java.util.*; class Players { private String name; // constructor of the class public Players(String str) { name = str; } } public class CompareToExample4 { // main method public static void main(String[] args) { Players ronaldo = new Players(&apos;Ronaldo&apos;); Players sachin = new Players(&apos;Sachin&apos;); Players messi = new Players(&apos;Messi&apos;); ArrayList al = new ArrayList(); al.add(ronaldo); al.add(sachin); al.add(messi); // performing binary search on the list al Collections.binarySearch(al, &apos;Sehwag&apos;, null); } } 

산출:

 Exception in thread &apos;main&apos; java.lang.ClassCastException: class Players cannot be cast to class java.lang.Comparable 

자바 문자열 CompareTo(): ​​NullPointerException

NullPointerException은 null 객체가 CompareTo() 메서드를 호출할 때 발생합니다. 다음 예를 살펴보세요.

배열 목록

파일 이름: CompareToExample5.java

 public class CompareToExample5 { // main method public static void main(String[] args) { String str = null; // null is invoking the compareTo method. Hence, the NullPointerException // will be raised int no = str.compareTo(&apos;India is my country.&apos;); System.out.println(no); } } 

산출:

 Exception in thread &apos;main&apos; java.lang.NullPointerException at CompareToExample5.main(CompareToExample5.java:9)