2011-11-18 15 views
6

È necessario utilizzare un delimitatore di postfix per indicare il tipo di costante utilizzato nel codice sorgente, come L per lungo. Tuttavia, per cortometraggi e byte non ci sono delimitatori, quindi ho bisogno di lanciare in modo esplicito il valore della costante in questo modo:Delimitatori di postfix Java

short x = (short)0x8000; 

Mi chiedevo se Java prende misure supplementari nel bytecode compilato per convertire questo da un tipo intero realtà ad un corto, o sa che questo si inserirà in una parola e usare la costante così com'è? Altrimenti, c'è un modo in cui posso postare numeri come questi per indicare breve o byte?

+0

Partenza http://stackoverflow.com/questions/2720738/java-short-and-casting - se aiuta !! – Nik

risposta

5

Mi stavo chiedendo se Java esegue passaggi aggiuntivi nel bytecode compilato per convertirlo effettivamente da un numero intero a un cortocircuito o sa che questo si adatta a una parola e utilizza la costante così com'è?

Penso che sappia che si inserirà in una parola e la userà così com'è. Per esempio bytecode per:

public class IntToShortByteCode { 
    public static void main(String... args){ 
     short x = (short)0x8888; 
     System.out.println(x); 
    } 
} 

è (javac 1.6.0_14):

Compiled from "IntToShortByteCode.java" 
public class IntToShortByteCode extends java.lang.Object{ 
public IntToShortByteCode(); 
    Code: 
    0: aload_0 
    1: invokespecial #1; //Method java/lang/Object."<init>":()V 
    4: return 

public static void main(java.lang.String[]); 
    Code: 
    0: sipush -30584 
    3: istore_1 
    4: getstatic  #2; //Field java/lang/System.out:Ljava/io/PrintStream; 
    7: iload_1 
    8: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 
    11: return 

} 

In caso contrario, c'è un modo posso postfix numeri come questi per indicare brevi o di byte?

No.

Problemi correlati