589 Stimmen

String.equals versus ==

Dieser Code trennt eine Zeichenkette in Token und speichert sie in einem Array von Zeichenketten, und vergleicht dann eine Variable mit dem ersten Home ... warum funktioniert es nicht?

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

6voto

engy Punkte 141

Der == Operator ist ein einfacher Vergleich von Werten.
Bei Objektreferenzen sind die (Werte) die (Referenzen). So gibt x == y true zurück, wenn x und y auf dasselbe Objekt verweisen.

4voto

Dinoop Nair Punkte 2463

El .equals() prüft, ob die beiden Zeichenketten den gleichen Wert haben und gibt die boolean Wert, während der == Operator prüft, ob die beiden Zeichenketten dasselbe Objekt sind.

4voto

Keith Spriggs Punkte 225

Jemand sagte in einem Beitrag weiter oben, dass == für int und zur Überprüfung von Nullen verwendet wird. Es kann auch verwendet werden, um boolesche Operationen und Char-Typen zu prüfen.

Seien Sie jedoch sehr vorsichtig und vergewissern Sie sich, dass Sie einen char und nicht einen String verwenden. zum Beispiel

    String strType = "a";
    char charType = 'a';

für Zeichenketten würden Sie dann prüfen Dies wäre korrekt

    if(strType.equals("a")
        do something

sondern

    if(charType.equals('a')
        do something else

falsch wäre, müssten Sie Folgendes tun

    if(charType == 'a')
         do something else

4voto

rohan kamat Punkte 563

a==b

Vergleicht Referenzen, nicht Werte. Die Verwendung von == mit Objektreferenzen ist im Allgemeinen auf Folgendes beschränkt:

  1. Vergleichen, um zu sehen, ob eine Referenz null .

  2. Vergleich von zwei Enum-Werten. Dies funktioniert, weil es nur ein Objekt für jeden enum konstant.

  3. Sie möchten wissen, ob sich zwei Verweise auf dasselbe Objekt beziehen

"a".equals("b")

Vergleicht Werte auf Gleichheit. Da diese Methode in der Datei Object Klasse, von der alle anderen Klassen abgeleitet sind, wird sie automatisch für jede Klasse definiert. Für die meisten Klassen führt sie jedoch keinen intelligenten Vergleich durch, es sei denn, die Klasse setzt sie außer Kraft. Er wurde für die meisten Java-Kernklassen sinnvoll definiert. Wenn es für eine (Benutzer-)Klasse nicht definiert ist, verhält es sich genauso wie == .

3voto

Harrydev Punkte 49

Verwenden Sie Split statt tokenizer, es wird sicherlich u genaue Ausgabe liefern für z.B:

string name="Harry";
string salary="25000";
string namsal="Harry 25000";
string[] s=namsal.split(" ");
for(int i=0;i<s.length;i++)
{
System.out.println(s[i]);
}
if(s[0].equals("Harry"))
{
System.out.println("Task Complete");
}

Ich bin sicher, dass Sie danach bessere Ergebnisse erzielen werden.....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X