Java 为什么一个数字是合法的,另一个是非法的?
为什么源代码中的某些数字是合法的,而其他数字是非法的Java 为什么一个数字是合法的,另一个是非法的?,java,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.pr
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
}
}
在java中直接调用没有小数点的数字时,它会自动假定它是整数(类型为
int
,并且是有符号的)。它有一个4字节的内存空间,允许最大值为2147483647,这就是为什么这是合法的,但不是2147483648。当您放置L
、f
或D
时,您告诉编译器该值将被定义为长、浮点或双精度(分别),它们具有更大的内存分配,允许更大的值范围
有关更多信息,我建议您阅读与java相关的数据类型。请参阅
Integer.MAX_VALUE
和Long.MAX_VALUE
。请参阅System.out.println(Integer.tobinarysting(2147483647))代码>你为什么不这么认为?因为每种类型(int、long、float、double)都有自己有限的合法值范围。另请参见和。相关:。搜索更多。