为什么我得到一个 int number is too large where long 被分配给 min 和 max?
/*
long: The long data type is a 64-bit signed two's complement integer.
It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive).
Use this data type when you need a range of values wider than those provided by int.
*/
package Literals;
public class Literal_Long {
public static void main(String[] args) {
long a = 1;
long b = 2;
long min = -9223372036854775808;
long max = 9223372036854775807;//Inclusive
System.out.println(a);
System.out.println(b);
System.out.println(a + b);
System.out.println(min);
System.out.println(max);
}
}
最佳答案
java 中的所有字面量数字默认为 ints
,范围为 -2147483648
到 2147483647
。
您的文字超出此范围,因此要进行编译,您需要指出它们是 long
文字(即带有 L
的后缀):
long min = -9223372036854775808L;
long max = 9223372036854775807L;
注意java同时支持大写L
和小写l
,但我建议不要使用小写l
,因为它看起来像一个 1
:
long min = -9223372036854775808l; // confusing: looks like the last digit is a 1
long max = 9223372036854775807l; // confusing: looks like the last digit is a 1
Java Language Specification一样的
An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).
关于Java long number太大错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924896/