Vergleichen mit java



  • HI ihr, vielleicht könnt ihr mir das erklären!
    im java gibt es ja 2 arten zwei objekte miteinander zuvergleichen, einmal mit dem
    operator == und einmal mit .euals (der unterschied ist mir klar, == untersucht die referenzen und .equals den inhalt!

    jedoch habe ich eine klass mensch erstellt und möchte diese nun miteinander vergleichen (referenz und Inhalt)
    jedoch gibt er mir bei beiden arten zurück das die objekte gleich sind!
    WARUM???

    die klasse mensch ist in einer anderen datei abgespeichert! gibt den namen, das alter und die adresse zurück!

    aja wie kann ich das ganze objekt vergleichen, nicht nur den namen??

    [java]

    protected static void isequal(Comparable c1, Comparable c2) {

    //boolean result = c1.equals(c2); //es wird auch der inhalt verglichen!!
    boolean result = (c1 == c2); //liefert TRUE wenn beide referenzen auf das gleiche objekt zeigen

    if (result == false)
    System.out.println(c1 + " ist NICHT die selbe person wie " + c2);

    else if //(c1 == c2)
    (result == true)
    System.out.println(c1 + " ist die selbe person wie " + c2);
    }

    public static void main(String[] args) {
    Mensch test1, test2;

    test1 = new Mensch("Johann Siegele", "23", "rechengasse 2");
    test2 = new Mensch("Johann Siegele", "23", "rechengasse 2");
    //test2 = new Mensch("Michael steiner", "87", "wien 154");

    //String s1 = new String("Johann Siegele");

    //String s2 = s1;

    System.out.println( test1 );

    String s1 = test1.getName();
    String s2 = test2.getName();

    isequal(s1, s2);

    }

    } [/code]

    [ Dieser Beitrag wurde am 19.03.2003 um 12:29 Uhr von hares editiert. ]


  • Mod

    Du vergleichst hier zwei Strings. Das ist so ne Art Sonderfall. Strings sind unveränderbar, deshalb kann optimiert werden. Da man Strings nicht verändern kann, können zum Beispiel statt 2 gleiche Strings auch nur 1 String erzeugt werden (mit 2 Referenzen, die auf den selben String verweisen). ...und genau das wird wohl auch gemacht. Es ist aber wohl kein garantiertes Verhalten.



  • 🙂


Anmelden zum Antworten