Java编译报错integer number too large的含义与原因是什么
报错含义
Java中integer number too large编译错误,指代码中编写的整数字面量不符合解析规则,要么数值大小超出了对应整数类型的取值上限,要么字面量格式不合法被编译器判定为超出范围。
本次报错的触发原因
你这段代码的问题出在数组最后一个元素08上:
Java语法规定,以数字0开头、且后续接0-7数字的整数字面量,会被编译器按照八进制数解析,八进制的单个数位合法取值范围只有0-7,你写的08包含数位8,不属于合法八进制字符,编译器解析时就会抛出整数过大的错误,和数值8本身的大小没有关系。
你的错误代码如下:
int [] array = new int[] {12, 6, 78, 9, 45, 08};
对应解决方案
- 如果你的本意是写入十进制数值8,直接删除数字前多余的前导0即可,修正后代码可正常编译:
int [] array = new int[] {12, 6, 78, 9, 45, 8};
- 日常开发编写十进制整数时,不要随意在数字前加无意义的前导0,避免被编译器误识别为八进制数触发同类错误,比如写
09也会出现完全相同的报错。 - 如果后续遇到字面量数值真的超出int类型取值范围(int最大取值为2^31-1即2147483647)的场景,可以根据需求更换为
long类型(字面量末尾加L后缀)或者BigInteger类处理大整数,你当前的报错不属于这类场景。
内容的提问来源于stack exchange,提问作者John Mark Entrina
相关产品推荐
相关产品推荐

