Java Tricks

Aus SibiWiki
Zur Navigation springen Zur Suche springen

Strings vergleichen

Das Vergleichen von Strings führt oft zu Frustration, weil Java Strings (angeblich...) nicht als gleich erkennt. Meist sieht ein Vergleich dann so aus:

  // **** FALSCH!!!! ****
  String string1 = "Meier";
  String string2 = "Meier";
  if(string1 == string2){...}
  if(string1 != string2){...}

Wichtig: Strings sind OBJEKTE!!! D.h. ein Vergleich mit == (bzw. !=) funktioniert nur, wenn es sich um genau das gleiche OBJEKT handelt! Das ist z.B. nicht der Fall, wenn der String s1 = "Meier"; an einer Stelle gespeichert ist und der String s2 = "Meier" an einer anderen Stelle. Strings muss man mithilfe der Methode equals() vergleichen. Dann wird der Wert des Strings betrachtet und man erhält die gewünschte Gleichheit.

  // **** RICHTIG!!!! ****
  String string1 = "Meier";
  String string2 = "Meier";
  if(string1.equals(string2)){...}
  if(string1.equals(string2) == false){...}


Datum und Uhrzeit ausgeben

Mit folgenden Zeilen kann man in Java das Datum und Uhrzeit ausgeben lassen:

 Date date = new Date();
 String datumUndUhrzeit = date.toString();
 System.out.println(datumUndUhrzeit);

Für die Klasse Date braucht man folgendes Import-Statement: import java.util.Date;

Objekte als String (z.B. an die Konsole) ausgeben

Oft steht man vor der Schwierigkeit, dass man ein Objekt mit System.out.println() an die Konsole ausgeben möchte oder sonst eine String-Repräsentation eines Objektes braucht. Das geht am einfachsten (und strategisch am besten!), indem man in der Klasse die Methode toString() definiert. Diese Methode überschreibt dann die Methode toString() der Klasse Object. Z.B. für die Klasse Auftrag:

  import java.util.Date;
  
  public class Auftrag{
  
     private String text;
     private String datumZeit;
  
     public Auftrag(String text){
        this.text = text;
        this.datumZeit = new Date();
     }
  
     // weitere Methoden!!!
  
     // **** JETZT KOMMT DAS WESENTLICHE! ****
     public String toString(){
        return (this.text + ", "+this.datumZeit);
     }
  }

Mit Hilfe der Methode toString() werden die Objekte auch richtig im StackWithViewer (bzw. QueueWithViewer) angezeigt!