为什么源代码中的某些数字是合法的而其他数字却是非法的?
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
}
}
答案 0 :(得分:2)
在Java中直接调用不带小数点的数字时,它会自动假定它是整数(类型为int
,并且已签名)。它具有4个字节的存储空间,允许最大值2,147,483,647,这是合法的,但不是2,147,483,648。当您放置L
,f
或D
时,您会告诉编译器该值将分别定义为long,float或double,它们具有更大的内存分配,用于更大范围的值。
有关更多信息,建议您阅读有关Java的数据类型。