Henryk Plötz: String codiernung

Beitrag lesen

Moin,

public class Test {
    public static void main(String args[]) {
        String s1 = new String();
        String s2 = new String();

s1 = "Test";
        s2 = "Test";

if (s1 == s2) {
            System.out.println("gleich");
        }
    }
}

Das ist ja auch beides das gleiche String-Objekt. ;-)
Deine Initialisierung mit new String() ist irreführen, da du danach die frisch erzeugten Objekte wegwirfst und s1 bzw. s2 mit einem anderen Wert _überschreibst_. Das ist dann jeweils ein Verweis auf das Stringliteral welches du im Quellcode angegeben hast, und der Compiler wäre ja schön blöd, wenn er das gleiche Literal zweimal speichern würde. (Ein Dekompiler sollte das aufzeigen.)

Wenn du das Programm so abänderst, wie du es gemeint hast:
public class Test {
    public static void main(String args[]) {
        String s1 = new String("Test");
        String s2 = new String("Test");

if (s1 == s2) {
            System.out.println("gleich");
        }
    }
}

kommt auch das erwartete Ergebnis raus.

--
Henryk Plötz
Grüße aus Berlin
~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~