实际上我的系统将Long.MAX_VALUE设为9223372036854775807
但是当我写这样的程序时,
package hex;
/**
*
* @author Ravi
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
long x = 9223372036854775807;
System.out.println(x);
}
}
我收到编译时错误。任何人都可以解释原因吗?
答案 0 :(得分:8)
没有后缀,它是一个int常量(并且溢出),而不是长常量。最后坚持L
。
答案 1 :(得分:4)
你可能想尝试这样使用:
long x = 9223372036854775807L;
最后没有 L ,您将声明int
。
答案 2 :(得分:3)
9223372036854775807
是一个int
字面值,它太大而无法放入int
。
将int
字面值分配给long
这一事实没有任何区别。
您需要使用long
后缀创建L
文字。
答案 3 :(得分:0)
如果您未指定数字文字的类型,则假定为int
。您需要通过在数字末尾添加“l”或“L”(更好,因为“l”看起来像1)来指定您想要long
:
long x = 9223372036854775807L;
而不是:
long x = 9223372036854775807;