6
需要使用後綴分隔符來表示源代碼中使用的常量類型,例如L代表long。然而,短褲和字節沒有分隔符,所以我需要顯式轉換,像這樣的恆定值:Java後綴分隔符
short x = (short)0x8000;
我在想,如果Java的需要在編譯的字節碼額外的步驟,實際上是從一個整數類型轉換這個簡短的,還是它知道這將符合一個詞,並使用常數?否則,有沒有辦法我可以像這些後綴數字來表示短或字節?
需要使用後綴分隔符來表示源代碼中使用的常量類型,例如L代表long。然而,短褲和字節沒有分隔符,所以我需要顯式轉換,像這樣的恆定值:Java後綴分隔符
short x = (short)0x8000;
我在想,如果Java的需要在編譯的字節碼額外的步驟,實際上是從一個整數類型轉換這個簡短的,還是它知道這將符合一個詞,並使用常數?否則,有沒有辦法我可以像這些後綴數字來表示短或字節?
我想知道如果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的這些數字表示短期或字節?
號
退房http://stackoverflow.com/questions/2720738/java-short-and-casting - 如果幫助! – Nik