Che in realtà si sta parlando è un numero intero letterale (1
) rispetto a una lunga letterale (1L
). In realtà non esiste un letterale breve o di byte in Java. Ma di solito non importa, perché non v'è una conversione implicita da letterali interi ai tipi byte
, short
e char
. Così:
final byte one = 1; // no typecast required.
La conversione implicita è consentito solo se il letterale è nell'intervallo desiderato. Se non è necessario un cast di tipo; per esempio.
final byte minusOne = (byte) 255; // the true range of byte is -128 .. +127
Ci sono altri casi in cui è necessaria una conversione esplicita; per esempio. disambiguare i sovraccarichi del metodo o forzare una specifica interpretazione in un'espressione. In questi casi è necessario utilizzare un cast per fare la conversione.
Il vostro esempio è un altro di quei casi.
Ma la linea di fondo è che non v'è alcuna sintassi Java per esprimere byte
o short
letterali.
fonte
2012-01-14 08:17:46
Grazie. (Spero che non è quello l'upvote è per se ... :-)) –
No, ma posso darvi -1 per il raggiungimento di 100k prima di me. ;) –
"non importa" - lo fa se stai cercando di usare il letterale come argomento per un metodo o un costruttore. :( – yshavit