2つの文字列を比較する方法 Java

文字列を比較するメソッド Java

Java 2つの文字列を比較するために活用できるさまざまな方法を提供します Java. 文字列比較 Java 文字のシーケンスを文字列に一致させる機能です。

文字列を比較する方法を学ぶには Java、以下のクラスが提供するメソッドを使用できます。

  • 文字列クラス Java.lang パッケージ。
  • オブジェクトクラスから Java.util パッケージ。
  • org.apache.commons.lang3 パッケージの StringUtils クラス。

これらのほとんど Java 文字列の比較方法には大文字と小文字を区別しないという解決策があります。 Java このチュートリアルでは、2 つの文字列を比較するために使用できるさまざまな方法を学習します。

方法 1: String equals() メソッド

当学校区の Java String 等しい() メソッド 2 つの文字列オブジェクトを比較して、等しい文字列値を探します。

構文:

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()メソッド

当学校区の Java オブジェクトは等しい() メソッドは 2 つの文字列オブジェクトを比較して、同じ値を持つかどうかを確認します。

構文:

public static boolean equals(Object a, Object b)

equals() メソッドのパラメータ

a – 最初の文字列オブジェクトの引数文字列。

b – XNUMX 番目の文字列オブジェクトの引数文字列。

equals() メソッドの戻り値の型

  • 文字列リテラルが等しい場合は true を返します。 XNUMX つの引数に 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: String CompareTo() メソッド

当学校区の Java 文字列比較() このメソッドは、2 つの文字列をアルファベット順に比較します。これは通常、辞書式順序と呼ばれます。

構文:

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 を返します。

XNUMX 番目の結果は、文字が異なるため、値 XNUMX を返します。

注意: 大文字と小文字を無視するには、「compareToIgnoreCase」メソッドを使用できます。

方法 4: StringUtils equals() メソッド

当学校区の Java StringUtils は、() に等しいです。 メソッドは、2 つの文字列の等価性を比較します。

プログラムに「org.apache.commons.lang3」ライブラリが追加されていることを確認してください。 これにより、StringUtil メソッドを使用して文字列を比較できるようになります。

Maven プロジェクトの場合は、これを使用します ガイド をクリックしてライブラリをプロジェクトに追加します。

ただし、ビルドツールを使用せずにライブラリを追加したい場合は、これを使用してください ガイド.

構文:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() メソッドのパラメータ

  • cs1 – 最初の引数の文字のシーケンス。
  • cs2 – XNUMX 番目の引数の文字シーケンス。

StringUtils equals() メソッドの戻り値

  • 文字列の比較が等しい場合は true を返します。 XNUMX つの引数に 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

説明:

XNUMX 番目と XNUMX 番目の文字列の内容が等しいため、結果は true を返します。

「equalsIgnoreCase」メソッドを使用すると、大文字と小文字を無視できます。

方法 5: StringUtils equalsAny() メソッド

当学校区の Java StringUtils は、Any() と等しいです。 メソッドは引数に文字列が存在するかどうかをチェックします。

構文:

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

StringUtils equalsAny() メソッドのパラメータ

  • string – 最初の引数の文字列値。 引数には null 値を指定することもできます。
  • 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

説明:

最初の文字列と XNUMX 番目の文字列の内容が等しいため、結果は 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 を返します。 同じ内容の文字列は同じ文字列プールに追加されるため、文字列は XNUMX つのアドレスを共有します。
  • XNUMX 番目の結果はブール値 false を返します。 オブジェクトの内容は異なるため、別の文字列プールが作成されます。 これは、文字列に個別のオブジェクト参照があることを意味します。 したがって、出力は false になります。

方法7: XNUMXつの文字列を比較するカスタムメソッドを作成する Java

辞書式順序を使用して 2 つの文字列を比較するメソッドを作成します。

構文:

public static int compareTwoStrings(String str1, String str2)

カスタムメソッドパラメータ

  • str1 – 比較する文字列。
  • str2 – 比較する文字列。

カスタムメソッドの戻り値

  • 0 – 最初の文字列が XNUMX 番目の文字列と等しい場合は、XNUMX を返します。
  • < 0 – 最初の文字列が XNUMX 番目の文字列より小さい場合、XNUMX より小さい数値を返します。
  • > 0 – 最初の文字列が XNUMX 番目の文字列より大きい場合、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

説明:

結果はゼロの値を返しました。これは、カスタム関数が期待どおりに動作していることを意味します。

概要

当学校区の Java 使用する 2 つの文字列の比較方法は、次の要因によって異なります。

  • 自分のメソッドを制御したいという欲求。 この場合は、カスタム メソッドを作成します。
  • レガシーコードは使用できません。 Java 6以下。
  • 最適なパフォーマンスを実現する方法。
  • 操作しているデータの種類。 たとえば、一連の可変引数から文字列を照合します。
  • 外部委託ライブラリによって提供される機能。 たとえば、StringUtils ライブラリは、文字列を比較するためのさまざまなメソッドを提供します。