整数过大

时间:2013-07-13 18:15:40

标签: java

嗨,我无法理解为什么这不起作用

if(Long.parseLong(morse) == 4545454545){
     System.out.println("2");
}

莫尔斯只是一串数字。问题是它表示整数太大:4545454545,但我确定Long可以比这长得多。

3 个答案:

答案 0 :(得分:15)

您需要使用4545454545l4545454545L将其限定为long。默认情况下,4545454545int字面值,4545454545超出int范围。

建议使用大写字母L以避免混淆,因为l1看起来很相似

你可以这样做:

if(Long.valueOf(4545454545l).equals(Long.parseLong(morse)) ){
     System.out.println("2");
}

OR

if(Long.parseLong(morse) == 4545454545l){
   System.out.println("2");
}

根据JLS 3.10.1

  

如果整数文字后缀为 ASCII字母L或l(ell),则整数文字的长度为long;否则它的类型为int(§4.2.1)。

答案 1 :(得分:3)

如果您的整数值大于2147483647,那么您需要使用长文字:

4545454545L

...注意最后的L,这是long和int文字之间的区别。小写l也可以工作,但是它的可读性较差,因为它很容易与1混淆(当你处理数字时不是很好!)

答案 2 :(得分:0)

您需要使用4545454545L4545454545l来限定它。