# Problem mit getString und if abfrage



## apfelkuchen (4. Apr 2005)

Hallo, ich habe eine Abfrage an die DB geschickt. und möchte dann das Ergebnis auswerten:


```
ResultSet results = stmt.executeQuery(sql); 
while(results.next())
            
   {
       System.out.println();
   
       if ( results.getString("fahrstil") == "'schnell'" ) 	System.out.println("faehrt schnell");
       
       else                    				                     System.out.println("faehrt nicht schnell.");
            }
```


ich möchte, dass er im ergebniss überprüft ob im feld "fahrstil" schnell steht. wenn ja, soll er faehrt schnell ausgeben, wenn nicht dann faehrt nicht schnell...

aber irgendwie druckt er immer faehrt schnell raus.

hilfe!!!

danke im voraus.


----------



## bronks (4. Apr 2005)

apfelkuchen hat gesagt.:
			
		

> if ( results.getString("fahrstil") == "'schnell'" )


Strings vergleicht man mit .equals. Die beiden Hochkomma dürfen da auch nicht rein.


```
if ( results.getString("fahrstil").equals("schnell")
```


----------



## apfelkuchen (4. Apr 2005)

danke, hat prima funktioniert.


----------



## bambi (4. Apr 2005)

Nur noch kurz zur Erklaerung:
Mit "==" wird bei String die Referenz verglichen. Das heisst, dass es nur gleich ist, wenn die Strings die gleiche Refernz haben.
Mit .equals() wird der tatsaechliche Inhalt des Strings verglichen. 

```
String a = new String("einString");
String b = new String("einString");
String c = a;

System.out.println("a == b is " + (a == b));
System.out.println("a == c is " + (a == c));
System.out.println("a equals b is " + a.equals(b));
System.out.println("a equals c is " + a.equals(c));
```


```
a == b is false
a == c is true
a equals b is true
a equals c is true
```


----------



## apfelkuchen (4. Apr 2005)

danke für die erklärung, aber was ist die Referenz?


----------



## L-ectron-X (4. Apr 2005)

Wenn Du ein Objekt erzeugst, wird die Speicheradresse, die den Wert enthält an eine Referenz vom Typ des Objekts zurückgegeben. D.h. Eine Referenz auf ein Objekt ist ein Zeiger auf einen Wert an einer Speicherstelle.
Es handelt sich hier aber nicht um die physikalische Adresse der Speicherstelle, sondern um ein Stück Speicher, der von der VM verwaltet wird.

```
Typ referenz = new Typ();
```
Mit new wird Speicher für das Objekt eines bestimmten Typs reserviert und belegt. Die Speicheradresse wird an eine Referenz dieses Typs zurückgegeben, welche nun somit auf die Speicheradresse zeigt, in welcher der ein Wert abgelegt ist.


----------

