默认情况下,任何整型基元数据类型(字节、短整型、整型、长整型)都将被 Java 编译器视为整型。对于字节和短,只要分配给它们的值在其范围内,就没有问题,也不需要后缀。如果分配给 byte 和 short 的值超出其范围,则需要显式类型强制转换。
前任:
byte b = 130; // CE: range is exceeding.
以克服这种执行类型转换。
byte b = (byte)130; //valid, but chances of losing data is there.
在长数据类型的情况下,它可以毫不费力地接受整数值。假设我们分配像
long l = 2147483647; //which is max value of int
在这种情况下,不需要像 L/l 这样的后缀。默认情况下,java 编译器认为2147483647值为 int 类型。内部类型转换由编译器完成,int 自动提升为 Long 类型。
long l = 2147483648; //CE: value is treated as int but out of range
在这里,我们需要将后缀设置为L,以便java编译器将文字2147483648视为long类型。
所以最后
long l = 2147483648L;// works fine.