Java String CompareTo() メソッドと例

Java の文字列は、配列によってのみ内部的にサポートされるオブジェクトです。これは、文字に対するメモリの連続割り当てを意味します。 Java では文字列は不変であることに注意してください。つまり、String オブジェクトを作成してそれに値を代入すると、内容を変更することはできません。ただし、必要な変更を加えた別の String オブジェクトを作成できます。

Java の String クラスは、文字列に対してさまざまな操作を実行するための多くのメソッドで構成されています。ここでは Java String に焦点を当てます。 比較対象() この記事の方法。

Java String.compareTo() メソッド

ジャワ 比較対象() メソッドは、指定された文字列と現在の文字列を比較します。 辞書順に 。正の数、負の数、または 0 を返します。 Unicode 値 文字列内の各文字の。

例:

ジャワ




public> class> StringCompareTo {> > public> static> void> main(String[] args) {> > String str1 => 'Geeks'> ;> > String str2 => 'Geeks'> ;> > int> comparison = str1.compareTo(str2);> > if> (comparison <> 0> ) {> > System.out.println(str1 +> ' comes before '> + str2 +> ' lexicographically.'> );> > }> else> if> (comparison>>> 0> ) {> > System.out.println(str1 +> ' comes after '> + str2 +> ' lexicographically.'> );> > }> else> {> > System.out.println(str1 +> ' and '> + str2 +> ' are lexicographically equal.'> );> > }> > }> }>

出力:

Geeks and Geeks are lexicographically equal. 

構文

int comparison = str1.compareTo(str2); 

パラメーター:

  • str1: 比較用の文字列 1
  • str2: 比較用の文字列 2

戻り値:

  • もし 文字列1> 文字列2 、それは戻ります ポジティブ 番号
  • もし 文字列1 、それは戻ります ネガティブ 番号
  • もし 文字列1 == 文字列2 、それは戻ります 0

例外: 次の 2 つの例外がスローされます。

  • NullPointerException - 指定されたオブジェクトが Null の場合。
  • ClassCastException- 現在のオブジェクトを指定されたオブジェクトと比較できない場合。

CompareTo() メソッドのバリアント

がある 3つのバリエーション 比較対象() 次のような方法があります。

  1. int CompareTo(Object obj) を使用する
  2. int CompareTo(String AnotherString) を使用する
  3. int CompareToIgnoreCase(String str) を使用する

1. int CompareTo(オブジェクト obj)

このメソッドは、この文字列を別のオブジェクトと比較します。

構文:

int compareTo(Object obj) 

パラメーター:

  obj:   the Object to be compared. 

戻り値: 引数が辞書編集的にこの文字列と等しい文字列の場合は値 0。引数が辞書編集的にこの文字列より大きい文字列の場合は 0 より小さい値。引数が辞書順でこの文字列より小さい文字列の場合は 0 より大きい値。

例:

以下は int CompareTo(Object obj) の実装です。

ジャワ




// Java code to demonstrate the> // working of compareTo()> public> class> Cmp1 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeksforgeeks'> ;> > String str2 => new> String(> 'geeksforgeeks'> );> > String str3 => new> String(> 'astha'> );> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks object> > System.out.print(> > 'Difference of geeksforgeeks(obj) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha object> > System.out.print(> > 'Difference of astha(obj) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str3));> > }> }>

出力

Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0 Difference of astha(obj) and geeksforgeeks(str) : 6 

2. int CompareTo(String anotherString)

このメソッドは、2 つの文字列を辞書編集的に比較します。

構文:

int compareTo(String anotherString) 

パラメーター:

  anotherString:    the String to be compared. 

戻り値: 引数が辞書編集的にこの文字列と等しい文字列の場合は値 0。引数が辞書編集的にこの文字列より大きい文字列の場合は 0 より小さい値。引数が辞書順でこの文字列より小さい文字列の場合は 0 より大きい値。

例:

以下は int CompareTo(String anotherString) の実装です。

ジャワ




// Java code to demonstrate the> // working of compareTo()> public> class> Cmp2 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeksforgeeks'> ;> > String str2 => 'geeksforgeeks'> ;> > String str3 => 'astha'> ;> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks string> > System.out.print(> > 'Difference of geeksforgeeks(str) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha string> > System.out.print(> > 'Difference of astha(str) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str3));> > }> }>

出力

Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0 Difference of astha(str) and geeksforgeeks(str) : 6 

3. int CompareToIgnoreCase(String str)

このメソッドは、大文字と小文字の違いを無視して、2 つの文字列を辞書編集的に比較します。

構文:

int compareToIgnoreCase(String str) 

パラメーター:

  str:   the String to be compared. 

戻り値: このメソッドは、指定された文字列がこの文字列より大きい、等しい、または小さい場合に、大文字と小文字の区別を無視して、負の整数、ゼロ、または正の整数を返します。

例:

以下は int CompareToIgnoreCase(String str) の実装です。

ジャワ




// Java code to demonstrate the> // working of compareToIgnoreCase()> public> class> Cmp3 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeks'> ;> > String str2 => 'gEEkS'> ;> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks string> > // case sensitive> > System.out.print(> > 'Difference of geeks and gEEkS (case sensitive) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha string> > // case insensitive> > // using compareToIgnoreCase()> > System.out.print(> > 'Difference of geeks and gEEkS (case insensitive) : '> );> > System.out.println(str1.compareToIgnoreCase(str2));> > }> }>

出力

Difference of geeks and gEEkS (case sensitive) : 32 Difference of geeks and gEEkS (case insensitive) : 0 

Java String CompareTo() メソッドの例外

Java の CompareTo() メソッドでは、次の 2 つの例外が発生する可能性があります。

  • NullPointerException
  • クラスキャスト例外

CompareTo() NullPointerException

Java では、比較対象のオブジェクトのいずれかが一致しない場合、compareTo() メソッドは NullPointerException をスローします。 ヌル 。これにより、null 値を明示的に処理できるようになり、予期しない動作が防止されます。

例:

ジャワ




public> class> cmp5> {> // 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(> 'Geeks'> );> > System.out.println(no);> }> }>

出力:

  Exception in thread 'main' java.lang.NullPointerException      at cmp5.main(cmp5.java:11) 

クラスキャスト例外

これは実行時例外であり、compareTo() メソッドで互換性のない型の 2 つのオブジェクトが比較されるときに発生します。

例:

ジャワ




public> class> ClassCastExceptionExample {> > public> static> void> main(String[] args) {> > Object obj1 => 'Hello'> ;> > Object obj2 => 10> ;> // Integer object> > // Explicitly cast obj2 to String to force the exception> > int> comparison = ((String) obj2).compareTo(obj1);> > System.out.println(> 'Comparison: '> + comparison);> > }> }>

出力:

./ClassCastExceptionExample.java:8: error: incompatible types: Object cannot be converted to String int comparison = ((String) obj2).compareTo(obj1); // ClassCastException occurs here 

こちらもお読みください:

  1. Java で 2 つの文字列を比較する
  2. Java で 2 つの文字列を辞書順に比較する
  3. Java Integer CompareTo() メソッド

結論

Java の CompareTo() 関数は、2 つの文字列またはオブジェクトを辞書編集的に比較するために使用されます。正、ゼロ、または負の整数を返します。このチュートリアルでは、このメソッドを取り上げ、その動作と例外について説明しました。

続きを読む Java 文字列メソッド

Java String CompareTo() メソッド - FAQ

Javaで文字列を比較するにはどうすればよいですか?

Java では、compareTo() メソッドを使用して文字列を比較できます。 2 つのパラメータを受け入れ、それらを辞書順に比較します。

JavaのcompareTo()メソッドとequals()メソッドの違いは何ですか?

等しい() メソッド CompareTo() メソッド
2 つのオブジェクトがまったく同じかどうかを確認するために使用されます。 2 つのオブジェクトを比較し、それらの相対的な順序を決定するために使用されます。

ブール値を返します。

  • オブジェクトが等しいとみなされる場合は true。
  • それ以外の場合は false。

整数を返します。

  • 最初のオブジェクトが 2 番目のオブジェクトより小さいとみなされる場合は、負の値。
  • オブジェクトが等しいとみなされる場合はゼロ。
  • 最初のオブジェクトが 2 番目のオブジェクトよりも大きいとみなされる場合は、正の値。

JavaではcompareTo()は何を返しますか?

Java の CompareTo() メソッドは整数を返します。可能な値は次の 3 つです。

  • 負の値: 最初のオブジェクトが 2 番目のオブジェクトより小さいとみなされる場合。
  • ゼロ: オブジェクトが等しいとみなされる場合。
  • 正の値: 最初のオブジェクトが 2 番目のオブジェクトより大きいとみなされる場合。