58,454
社区成员
发帖
与我相关
我的任务
分享
1 int
1U unsigned int
1L long
1UL unsigned long
1LL long long
1ULL unsigned long long
这些后缀的作用通常是在赋值或者比较或者传入 sizeof 计算大小的时候,可以严格区分类型,减少编译警告。然而对于 Java 这种,一数字无符号,二没有 sizeof 运算符的语言,实在没必要搞什么 L 后缀。如果数字常量的值超出了 Integer.MAX_VALUE,而不加 L 加后缀的话,会报编译错误。搞不懂 Java 将数字常量赋值给 long 还要强制加 L 后缀的设计意义何在?如果在 L 后缀用于区分重载时,还可以理解。如:public class DummyMethod {
public static void fuck(byte v) {
System.out.println("byte => [" + v + "]");
}
public static void fuck(short v) {
System.out.println("short => [" + v + "]");
}
public static void fuck(int v) {
System.out.println("int => [" + v + "]");
}
public static void fuck(long v) {
System.out.println("long => [" + v + "]");
}
public static void main(String[] args) {
fuck(1); // void fuck(int v);
fuck(1L); // void fuck(long v);
}
}
然而不过可以区分 int 和 long。如果要调用参数是 byte、char、short 类型的版本,还是要靠强制转换。