Java长号太大错误? [英] Java long number too large error?
问题描述
为什么我的int号太大而long被分配到min和max?
Why do I get an int number is too large where the long is assigned to min and 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
包含。
All literal numbers in java are by default ints
, which has range -2147483648
to 2147483647
inclusive.
您的文字超出此范围,因此要进行此编译,您需要指明它们 long
文字(即后缀 L
):
Your literals are outside this range, so to make this compile you need to indicate they're long
literals (ie suffix with L
):
long min = -9223372036854775808L;
long max = 9223372036854775807L;
请注意,java支持大写 L
和小写 l
,但我建议不使用小写 l
,因为它看起来像 1
:
Note that java supports both uppercase L
and lowercase l
, but I recommend not using lowercase l
because it looks like a 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)。
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长号太大错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!