Java长号错误太大?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

为什么我得到一个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,其范围-21474836482147483647包容。

你的文字在这个范围之外,所以为了编译你需要指出它们是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

扫码关注云+社区