String.equals と == [重複] 質問する

String.equals と == [重複] 質問する

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

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");
    }
}

ベストアンサー1

使用string.equals(Object other)文字列を比較する関数であり、==演算子ではありません。

関数は文字列の実際の内容をチェックし、演算子==はオブジェクトへの参照が等しいかどうかをチェックします。文字列定数は通常、同じ値を持つ 2 つの定数を実際に比較できるように「インターン化」されています==が、それに依存しない方がよいことに注意してください。

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

注意: 比較は 'usuario' で行われます。コード内で null でないことが保証されているためです。ただし、配列内に実際にトークンが含まれているかどうかは確認する必要があります。datosそうでない場合は、配列範囲外例外が発生します。

おすすめ記事