为什么一个数字合法而另一个数字非法呢?

时间:2019-10-29 18:16:32

标签: java

为什么源代码中的某些数字是合法的而其他数字却是非法的?

class Example{ 
    public static void main(String args[]){
        System.out.println(2147483647); //legal
        //System.out.println(2147483648); //illegal
        System.out.println(2147483648L); 
        System.out.println(9223372036854775807L);
        //System.out.println(9223372036854775808L); //Error
        System.out.println(9223372036854775808f); //Legal
        System.out.println(9223372036854775808D);//Legal
    }
}

1 个答案:

答案 0 :(得分:2)

在Java中直接调用不带小数点的数字时,它会自动假定它是整数(类型为int,并且已签名)。它具有4个字节的存储空间,允许最大值2,147,483,647,这是合法的,但不是2,147,483,648。当您放置LfD时,您会告诉编译器该值将分别定义为long,float或double,它们具有更大的内存分配,用于更大范围的值。

有关更多信息,建议您阅读有关Java的数据类型。