Java长号太大错误?
为什么我得到的int数太大而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语言规范相同
如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long; 否则它的类型为int(§4.2.1)。
您必须使用L
来向编译器说它是一个长文字。
long min = -9223372036854775808L; long max = 9223372036854775807L;//Inclusive