2012-01-14 14 views

risposta

15

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.

+0

Grazie. (Spero che non è quello l'upvote è per se ... :-)) –

+0

No, ma posso darvi -1 per il raggiungimento di 100k prima di me. ;) –

+2

"non importa" - lo fa se stai cercando di usare il letterale come argomento per un metodo o un costruttore. :( – yshavit

0

Ad esempio:

public static final byte CURRENCY_SYMBOL = 26; 

public static final short MAX_VALUE = 3276; 
Problemi correlati