/**
Das Programm erzeugt etwa die folgende Ausgabe:

leererString: ""
s1    : "Das ist ein String"
s2    : "zyx"
"stringRef" hat Laenge 3
"zyx" kommt lexikographisch nach "Das ist ein String"
false
true
true
false
stringRef = zyxDas ist ein String
true

*/
/*------------------------------------------------------------------*/

public class StringDemo1
{
   public static void main(String[] argv)
   {
   // Konstruktoraufrufe von String
   // -----------------------------
      String leererString = new String();
      String stringRef;   // lediglich Referenz
      String s1 = new String("Das ist ein String");
      String s2 = new String("zyx");
      boolean test;

      System.out.println("leererString: \""
         + leererString + "\"");
      System.out.println("s1    : \""
         + s1 + "\"");
      System.out.println("s2    : \""
         + s2 + "\"");
      StringRef = s2;
      // StringRef zeigt auf dasselbe Objekt wie s2

      System.out.println("\"stringRef\" hat Laenge "
         + stringRef.length());

   // Vergleiche
   // ----------
      System.out.print("\"" + stringRef
         + "\" kommt lexikographisch ");
      if (stringRef.compareTo(s1) < 0)
         System.out.print("vor");
      else
         System.out.print("nach");
      System.out.println(" \"" + s1 + "\"");

      test = s2.equals("ZYX");    // false
      // s2="zyx" ungleich "ZYX"
      System.out.println(test);
      test = s2.equalsIgnoreCase("ZYX");
      // Groß-/Kleinschreibung wird ignoriert,
      // also jetzt sind dann beide gleich
      System.out.println(test);   // true
      test = stringRef == s2;
      // liefert true, da beide Variablen auf
      // dasselbe Objekt zeigen
      System.out.println(test);   // true
      stringRef = "zyx";
      test = stringRef == s2;
      // liefert jetzt false, da verschiedene Referenzen
      System.out.println(test);   // false

   // Konkatenation, startsWith
   // -------------------------
      stringRef = stringRef + s1;
      // NEUES String-Objekt, das Konkatenation enthält
      // Es wird also nicht das String-Objekt verändert!!
      System.out.println("stringRef = " + stringRef);
      test=stringRef.startsWith("zyx");   // true
      System.out.println(test);
   }
}

