1. ホーム
  2. java

[解決済み] String.equals対== [重複] です。

2022-03-18 22:20:20

質問

このコードは文字列をトークンに分離して文字列の配列に格納し、変数と最初のホームを比較します ... なぜ動作しないのでしょうか?

public static void main(String...aArguments) throws IOException {

    String usuario = "Jorman";
    String password = "14988611";

    String strDatos = "Jorman 14988611";
    StringTokenizer tokens = new StringTokenizer(strDatos, " ");
    int nDatos = tokens.countTokens();
    String[] datos = new String[nDatos];
    int i = 0;

    while (tokens.hasMoreTokens()) {
        String str = tokens.nextToken();
        datos[i] = str;
        i++;
    }

    //System.out.println (usuario);

    if ((datos[0] == usuario)) {
        System.out.println("WORKING");
    }
}

解決方法は?

を使用します。 string.equals(Object other) 関数ではなく、文字列を比較するために == 演算子を使用します。

この関数は、文字列の実際の内容である == 演算子は、オブジェクトへの参照が等しいかどうかをチェックします。 文字列定数は通常quot;interned"であり、同じ値を持つ2つの定数を実際に比較するには == しかし、それに依存しない方がよい。

if (usuario.equals(datos[0])) {
    ...
}

注意: この比較は 'usuario' に対して行われますが、これはコード内で非 NULL であることが保証されているからです。 datos を使用すると、array-out-of-bounds 例外を発生させることができます。