【问题标题】:Java postfix delimitersJava 后缀分隔符
【发布时间】:2011-11-18 03:47:06
【问题描述】:

有必要使用后缀分隔符来表示源代码中使用的常量类型,例如 L 长。但是,对于短裤和字节,没有分隔符,所以我需要像这样显式转换常量值:

short x = (short)0x8000;

我想知道 Java 是否在编译后的字节码中采取了额外的步骤来将其从整数类型实际转换为短类型,或者它是否知道这将适合一个单词并按原样使用常量?否则,有没有办法可以在后缀这样的数字来表示短或字节?

【问题讨论】:

标签: java postfix-operator


【解决方案1】:

我想知道 Java 是否在编译后的字节码中采取了额外的步骤来实际将其从整数类型转换为 short 类型,或者它是否知道这将适合单词并按原样使用常量?

我认为它知道它会适合一个单词并按原样使用它。例如字节码:

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

}

否则,有没有办法可以给这些数字加上后缀来表示短或字节?

没有。

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2012-04-06
    • 2017-02-05
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多