提问人:Aaron 提问时间:1/19/2012 最后编辑:Andrew ThompsonAaron 更新时间:6/25/2017 访问量:62224
Java长号过大错误?
Java long number too large error?
问:
为什么我得到一个 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);
}
}
答:
77赞
Bohemian
1/19/2012
#1
默认情况下,java 中的所有文字数字都是 ,其范围为 inclusive。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
如果整数文字以 ASCII 字母 L 或 l (ell) 为后缀,则为长整型文字;否则,它的类型为 int (§4.2.1)。
评论
0赞
helpermethod
1/19/2012
迂腐一点:你也可以使用一个小的.l
12赞
TC1
1/19/2012
@OliverWeiler我想说的是,为了迂腐,你可以但不应该使用小 l,因为它看起来像 1。
0赞
Bladt
9/25/2015
如果您使用糟糕的字体,它看起来只会像 1,但可以肯定的是,为什么要冒混淆的风险。
25赞
Petar Minchev
1/19/2012
#2
您必须使用对编译器说它是一个长文本。L
long min = -9223372036854775808L;
long max = 9223372036854775807L;//Inclusive
评论
Long.MIN_VALUE
Long.MAX_VALUE
1L << -1
-1L >>> 1