Obwohl int i = 'a'
fehlerfrei funktioniert, ist das Konvertieren derselben in Integer
nicht zulässig, da eine Box-Konvertierung erforderlich ist.
Java-Box Umwandlung definiert ist nur für acht Fälle:
- Vom Typ
boolean
Boolean
eingeben
- Vom Typ
byte
Byte
- Vom Typ
short
eingeben Short
- von Typ Typ
char
zu type Character
int
Vom Typ Integer
- Vom Typ
long
eingeben Long
- Vom Typ
float
eingeben Float
- Vom Typ
double
eingeben Double
eingeben Da 'a'
ein char
wörtlichen ist, Java nicht Konvertierung von char
zu Integer
zulassen: Ein Zeichenliteral ist immer vom Typ char
.
Wenn Sie jedoch
Character ch2 = 97;
Java-Compiler schreiben sieht, dass 97 im gültigen Bereich ist für char
(dh 0..65535), so dass es 97
als char
behandelt, nicht int
und erlaubt die Boxen Umwandlung. Wenn Sie dasselbe mit einer außerhalb des Bereichs liegenden Konstante versuchen, wird ein Fehler ausgegeben:
Character ch3 = 65536; // error: incompatible types: int cannot be converted to Character
Wie erwarten Sie, dass der Compiler in der Lage ist, "a" in einen ganzzahligen Wert zu konvertieren? – ericbn
@ericbn [So] (http://ideone.com/jvaWzh) Im Wesentlichen benutzt OP "a" als eine andere Art, '97' zu schreiben. Diese Frage ist überraschend schwierig. – dasblinkenlight
@Stirios Delimanolis Dies ist nicht doppelt. – Mathur