FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

String[] =|= String[]

String[] =|= String[] 2005-06-26 17:59
Connor
Also ich hab jetzt mal etwas vorgearbeitet, da mir letzes mal zu viel fehlte und bin jetzt aufn problem gestoßen

ich erezeuge einmal ein

String[] u1Array = new String[1];
u1Array[0] = u1.toString();

und eine Operation macht

String[] anfangszeitenString = new String[1];
anfangszeitenString[0] = _vorstellung.gibAnfangszeit().toString();

es gilt auch eigentlich
_vorstellung.gibAnfangszeit().toString() = u1.toString()

vergleiche ich nun
assertEquals(u1Array[0],mk1.gibAnfangszeiten(1)[0]) erhalte ich true

bei assertEquals(u1Array,mk1.gibAnfangszeiten(1)) erhalte ich ne Failure Meldung die ich nicht verstehe
junit.framework.AssertionFailedError:
expected:<[Ljava.lang.String;@10d448> but was:<[Ljava.lang.String;@e0e1c6>

Re: String[] =|= String[] 2005-06-26 20:23
Fred
Verschiedene Arrays gleichen Inhalts sind eben nicht gleich.

Re: String[] =|= String[] 2005-06-26 21:40
Anonymer User
assertEquals() ruft das equals() von den jeweiligen Objekten auf. Du musst also Werte in Arrays und nicht Arrays vergleichen. Sonst wird nur der Ort im Speicher verglichen, weil das ja eindeutig sagt, ob es sich um das gleiche Objekt handelt oder nicht. Deswegen haben Arrays auch die entsprechende equals()-Methode.

Re: String[] =|= String[] 2005-06-27 12:40
Anonymer User
Bei eindimensionalen Arrays kannst Du Arrays.equals(Object[] o1, Object[] o2) benutzen. Also in Deinem Fall:
assertTrue(Arrays.equals(u1Array, mk1.gibAnfangszeiten(1)));
Für mehrdimensionale (oder allgemein verschachtelte) Arrays gibt es seit Java 1.5 auch Arrays.deepEquals(Object[] o1, Object[] o2)LEIFer