• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Java String vergleich

Flemli200

Mitglied
Hi,

ich habe zwei Arrays, aus denen ich Daten auslesen und vergleichen möchte... Quellcode sieht wie folgt aus:

Code:
String[] check              =   this.zeile[x].split(";");
String Bilanzkreis_aktuell  =   new String(check[2]);


String[] ebeneZwei          =   this.zeile[y].split(";");
String Bilanzkreis          =   new String(ebeneZwei[2]);

System.out.print(Bilanzkreis_aktuell+" == "+ Bilanzkreis +" = ");
System.out.print(Bilanzkreis_aktuell == Bilanzkreis);
System.out.println();
(Die Ausgabe wird durch eine if-Abfrage ersetzt)

Die Ausgabe des prints:

GASPOOLH00900019 == GASPOOLH00900019 = false


Warum, wird der Verglichene String als false angegeben?? Wenn beide Bilanzkreise doch komplett übereinstimmen?
 
Werbung:
Schau dir mal folgenden Code an:

Code:
public class StringCompare {

    public static void main(String[] args) {
        
        String a = "test";
        String b = "test";
        
        String c = new String("test");
        String d = new String("test");
        
        System.out.println(a == b); // true
        System.out.println(c == d); // false
        
        System.out.println(c.equals(d)); // true

        // lets print the hash Codes
        
        System.out.println(System.identityHashCode(a));
        System.out.println(System.identityHashCode(b));
        
        System.out.println(System.identityHashCode(c));
        System.out.println(System.identityHashCode(d));
    }
}

Wenn du Zuweisungen in der Art s = "string"; s1 = "string"; machst dann landet dies im sogenannten String-Pool.
Man kann sagen, dass das "Compile-Time Konstanten" sind.

Mit new String() erzeugst du ein neues String Object und wenn man zwei solche (String) Objekte mit == vergleicht dann sind dass nicht die
gleichen Objekte.

Um (String) Objekte auf auf gleichen Inhalt zu pruefen braucht man die equals Funktion.
 
Zuletzt bearbeitet:
Sry, ich hab nich alles geschrieben *grmbl*

Ich habe diese Abfrage schon mit equals versucht (da gibt es dann keine ausgabe und das kleine tool hängt sich auf)
und ich habe auch das new String weggelassen... also diese kombis hab ich schon und bin ein wenig am verzweifeln ;)
 
Werbung:
also die equals() Methode muss eigentlich auf jeden Fall funktionieren. Kann ich mir jetzt so auch nicht erklaeren....
Und normalerweise kann sich dann dein Java Programm nicht aufhaengen, sondern hoechstens eine Exception werfen und sich beenden...
 
Werbung:
ja... das mein ich... :D
Aufhängen war nu ein wenig schlecht beschrieben...
naja... ich schau mir das morgen noch einmal an... und dann mal sehen ob ich da ein wenig weiterkomm ;)

Danke!!
 
Hab gestern das Tool noch einmal gestartet und siehe da es funktioniert... :/
Was auch immer der Fehler war... jetzt ist er weg ;)
 
Hast du vielleicht vergessen eventuelle Aenderungen am Quellcode neu zu kompilieren? ;) Ansonsten kann man nur spekulieren, was schuld sein koennte... vllt zu wenig Platz auf Stack/Heap ... who knows. Naja hauptsache es funzt ;)
 
Werbung:
Zurück
Oben