Im folgenden Beispiel wird die Variable i implizit in einen String umgewandelt und anschließend mit einem String-Literal verkettet:
for(int i=1; i<=10; i++)
System.out.println("Der " + i + ". String!");
Die implizite Umwandlung erfolgt dadurch, dass auf alle
Nicht-Literale die Methode String.valueOf() angewendet wird.
String besitzt drei Arten von Varianten dieser Methode:
- Für jeden einfachen Datentyp gibt es eine eigene Variante. Die Varianten für die numerischen Datentypen rufen ihrerseits die Methode toString() der entsprechenden Wrapper-Klasse auf, um die String-Darstellung zu erhalten.
- Die Varianten für char-Arrays bedienen sich entsprechender Konstruktoren der Klasse String zur Konvertierung.
- Die dritte Variante dient zur Konvertierung beliebiger Objekte. Diese Variante liefert das Ergebnis der toString()-Methode des übergebenen Objekts. Falls null übergeben wird, liefert diese Variante den String "null".
Durch die implizite Umwandlung von char-Arrays ist folgende
Vereinbarung möglich:
char[] c = {'A', 'B'};
String s = c + "CD";
Bei der Vereinbarung von s meldet der Compiler keinen Fehler, weil
sich der Wert aus einer Verkettung ergibt. Das char-Array wird implizit in einen
String konvertiert. Aus diesem Grund funktioniert auch folgender »Trick« zur Konvertierung einer Integer:
int i = 123;
String s = ""+i;
Die Wrapper-Klassen der Ganzzahltypen definieren jeweils eine Methode (parseInt() von Integer, parseLong() von Long usw.), mit der aus einem String eine Zahl des betreffenden Typs gewonnen werden kann:
String intStr = "353";
int i = Integer.parseInt(intStr);
short s = Short.parseInt(intStr);
Zusätzlich wird eine zweite Variante zur Verfügung gestellt, bei der angegeben werden kann, zu welcher Basis die Zeichenkette
als Zahl interpretiert werden soll:
String intStr = "101";
int a = Integer.parseInt(intStr, 2);
int b = Integer.parseInt(intStr, 8);
int c = Integer.parseInt(intStr, 16);
System.out.println("a="+a+" b="+b+" c="+c);
Diese Sequenz liefert die Ausgabe:
a=5 b=65 c=257