2011-11-18 25 views
6

Konieczne jest użycie ogranicznika końcowego, aby określić typ stałej używanej w kodzie źródłowym, np. L na długą. , Szorty i bajty nie ma ograniczniki, więc muszę jednak jawnie rzutować stałą wartość tak:Ograniczniki Postfix języka Java

short x = (short)0x8000; 

Zastanawiałem się, czy Java wykonuje dodatkowe czynności w skompilowanego kodu bajtowego rzeczywiście przekształcić to od typu całkowitego na krótko, czy wie, że to zmieści się w słowo i użyje stałej tak jak jest? W przeciwnym razie, jest sposób, w jaki mogę dodawać numery takie jak te, aby określić krótki lub bajt?

+0

Wyjazd http://stackoverflow.com/questions/2720738/java-short-and-casting - jeśli pomaga !! – Nik

Odpowiedz

5

Zastanawiałem się, czy Java wykonuje dodatkowe czynności w skompilowanej kodu bajtowego rzeczywiście przekształcić to od typu całkowitego do krótkiego, czy też wiedzieć, że będzie pasować do słowa i używać stała jak jest?

Myślę, że wie, że będzie pasować do słowa i używa go tak jak jest. Na przykład kodu bajtowego dla:

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

jest (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 

} 

W przeciwnym razie, czy jest jakiś sposób mogę postfix jak te numery do oznaczenia krótki lub bajt?

nr

Powiązane problemy