2011-11-18 75 views
6

需要使用後綴分隔符來表示源代碼中使用的常量類型,例如L代表long。然而,短褲和字節沒有分隔符,所以我需要顯式轉換,像這樣的恆定值:Java後綴分隔符

short x = (short)0x8000; 

我在想,如果Java的需要在編譯的字節碼額外的步驟,實際上是從一個整數類型轉換這個簡短的,還是它知道這將符合一個詞,並使用常數?否則,有沒有辦法我可以像這些後綴數字來表示短或字節?

+0

退房http://stackoverflow.com/questions/2720738/java-short-and-casting - 如果幫助! – Nik

回答

5

我想知道如果Java在編譯的字節碼中實際將其從整數類型轉換爲簡短的,還是知道這將適合一個詞,並使用常數原樣?

我認爲它知道它將適合一個詞,並按原樣使用它。比如字節碼:

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 

} 

否則,是有辦法,我可以像postfix的這些數字表示短期或字節?