Arry=Arry?

Ignus

Mitglied
Hallo,

Code:
File userdir = new File(System.getProperty("user.dir"));
    System.out.println( userdir );
    String[] entries = userdir.list();


    for ( int i = 0; i < entries.length; i++ ){
          String x = entries[i].toString();
           String y = "classes";
           //String y=x;
          //System.out.println( x + " -- " + y);
         
          if(x==y)
          {
          System.out.println( x + " gefunden!" );
          }
    }

Der Inhalt "classes" kommt in entries[i] vor. Warum ist die if Abfrage dennoch nie true?
Ich habe doch 2 Strings mit gleichem Inhalt und dennoch scheint der Inhalt unterschiedlich zu sein. Warum?
 
Hallo,

Strings werden in Java nicht mit "==" verglichen sondern mit equals. Wenn Du den Vergleich x == y ausführst, werden soweit ich weiß die Speicheradressen der beiden Strings verglichen und diese sind unterschiedlich. Um zu überprüfen ob x und y den gleichen Inhalt haben nimmst du equals.
Also:
Code:
if(x.equals(y)) {
     //true
} else {
     //false
}

Gruß KlaDi.
 
Hallo,

Der Inhalt "classes" kommt in entries[ i ] vor. Warum ist die if Abfrage dennoch nie true?
Ich habe doch 2 Strings mit gleichem Inhalt und dennoch scheint der Inhalt unterschiedlich zu sein. Warum?
Du vergleichst hier wohl zwei unterschiedliche String Instanzen mit dem selben Inhalt. verwende besser die s1.equals(s2) Methode.

Gruß Tom
 
Hallo,

versuch es doch mal mit
Code:
x.equals(y)
Mit equals kann man Objecte bzw in diesem Fall Strings vergleichen.


MFG

zEriX
 
Au man, darauf muss man auch erstmal kommen, einen simplen Vergleich kompliziert hinzuschreiben...
Wer denkt schon bei nem "==" an ne Speicheradresse? Dann frag ich mich aber jetzt, warum "++" +1 addiert und nicht das Objekt verdoppelt.

Thx für die Erklärung.
 
Hallo,

hab da doch noch eine neue Frage dazu:
Ich fülle eine List ArrayList mit Objekten. So wie es dann aussieht tut er dabei jedes mal "nur?" die Speicheradressen in die Liste hinzufügen. Wie kann ich mir dann den Inhalt ausgeben lassen?

Code:
List list = new ArrayList();
        
        try{

            ResultSet rsA = ... ;
            int clmCnt = rsA.getMetaData().getColumnCount();
            Object[] rowData = new Object[clmCnt];

            while (rsA.next()){
                for (int i = 1; i <= clmCnt; i++) {
                        rowData[i - 1] = rsA.getString(i);
                }
                System.out.println(rowData); //hier wird der richtige Inhalt ausgegeben
                list.add(rowData);
            };
        }catch (Exception e) {e.printStackTrace();};
        
         System.out.println(list); //hier werden nur die Speicheradressen ausgegeben..
 
Zuletzt bearbeitet:
Könnte ich. Macht aber keinen Unterschied, da ich dann ebenfalls nur die Speicheradresse von rowData angezeigt bekomme und nicht den Inhalt.
 
Zuletzt bearbeitet:
Ja ist auch richtig!
Da du ja in die ArrayList ein weiteres Array reinpackst, musst du hier auch den Wert über de nIndex abfragen!

Java:
Iterator iter = list.iterator();
while(iter.hasMoreElements()) {
    Object[] arr = (Object[])list.next();
    for(int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}

Gruß
BlackMagician
 
Werte aus einem Array als String z.B. in der Konsole anzeigen geht mit Arrays.toString(someArray). Gibt man nur das Array aus so bekommt man von jedem Element nur die Adresse angezeigt.
 
Zurück