回 帖 发 新 帖 刷新版面

主题:[讨论]long型疑问

public class Test
{
    public static void main(String args[])
    {
        long d=5555555555555L;
        d++;
        System.out.println(d);
    }
}
d较小时不加L也能编译运行,如d=5555
d较大时不加L是编译不了,如Test.java:5: 过大的整数: 5555555555555
                long d=5555555555555;
加L能编译运行
为什么这样

回复列表 (共3个回复)

沙发

因为我们写的整数常量默认是int型,而你给int赋予的值超出了int的范围,所以必须在后面加上L,表示这个数字是一个长整型的。

板凳

3 楼


我想你肯定知道数据类型的转换吧,由精度大的无法自动转为精度小的,而精度小的能自动转为精度大的.按照java里的类型长度和数的范围.如下表:
名称        长度                 数的范围
长整型      64                   -9,223,372,036,854,775,808--9,223,372,036,854,775,807
整型        32                   -2,147,483,648--2,147,483,647
短整型      16                   -32,768--32,767
字节型      8                    -128--127
你给的例子5555没到长整型的范围以内呢,不用加也能自动转换过来了,而 5555555555555当然要加L了....

我来回复

您尚未登录,请登录后再回复。点此登录或注册