Ergebnis einer if-Abfrage false obwohl eigentlich true

  • Hallo Community,


    Zuersteinmal, ich weiß, ich muss objekt orientiert programmieren. Nur fällt mir das Verstehen von gettern und settern so schwer.


    Hier zu meinem Problem:




    Das ist jetzt nur ein Ausschnitt zusammengeschrieben. Der Eintrag Lobbymap in der Config wird durch einen Befehl gesetzt. Zeitgleich wird ein Eintrag in Location.spawns gesetzt. Ich kann also über die args[0] einen String eingeben, welcher dann in die config an beide Stellen eingetragen wird.


    Jetzt möchte ich alle Einträge von Location.spawns in ArrayList Zwischenspeicher speichern.


    Später in der for schleife möchte ich die Lobbymap dort aber raus nehmen.

    Also loope ich durch alle Einträge des Zwischenspeichers und und Vergleiche ob der Mapname den configeintrag Lobbymap entspricht. Wenn ja, wird dieser Wert nicht in die ArrayList map & Hashmap votemaps eingetragen.


    Aber das Ergebnis der ifschleife ist immer false.

    Es macht kein Sinn.

    Ich habe mir beide Werte einzeln ausgeben lassen (komplett identisch). Habe versucht jeweils einen Wert direkt durch einen String zu ersetzen, immer false.

    Wenn ich jetzt beide Werte eindeutig durch einen String ersetze, z.b. "A" wird das Ergebnis wie erwartet true.


    Ich raff es einfach nicht ||

  • .equals statt !=; == bzw. != testet, ob auf das selbe Objekt gezeigt wird, .equals vergleicht die Objekte (falls gut programmiert)

    MfG


    00110101 00110001 00110101 00111000 00110100 00110110 00110011 00110001 00110101 00111001 00110101 00110111 00110100 00110110 00110011 00110000 00110110 00110001 00110101 00110111 00110100 01000100 00110011 01000100 8o

    • Hilfreich

    In Java werden die Referenzen auf Objekte mit != geprüft. In Java gibt es den sog. String Pool, mehr dazu: https://stackoverflow.com/ques…ifferent-from-new-strings.


    Mit .equals() vergleichst du die Inhalte des Strings, nicht die Referenz. Der Inhalt deiner Strings mag gleich sein, die Referenz ist es jedoch nicht.


    Nochmal kurz (für Strings):

    - !=, == vergleich die Referenz

    - .equals() vergleicht den Inhalt


    LG Julian