为什么我们在java中不需要后缀?

时间:2016-04-02 11:35:58

标签: java

在编写一些代码时,我注意到长(原始)数据类型不需要后缀l或L.我的代码编译并运行正常。谁能解释这背后的逻辑?提前谢谢..

long l=435; //Complies and Run fine 

3 个答案:

答案 0 :(得分:3)

当你这样做时:

long l=435;

编译器将其视为int,然后,由于您提供的数据类型为long,因此自动转换long } 数据类型。所以你不需要后缀。

但是,如果您尝试使用非常长的数字,例如:

long l = 9999999999;

编译器将抛出错误(整数过大)。因为,它会尝试将其视为int,但它太大而不能成为int。所以,在这里,你需要一个后缀。如果你这样做:

long l = 9999999999L;

然后它会编译。
简单地说,一个只能放在long数据类型中的数字需要一个后缀。

答案 1 :(得分:2)

因为int类型可以自动转换为long。

答案 2 :(得分:0)

尝试分配一个真正的错误号,例如long l = 0xFFFFFFFFF;

初始化像0xFFFFFFFFF这样的文字时,如果没有后缀且变量是整数类型(int,long等),则该值假定为int。并且,int可以保存32位,而不是36位(9 x 0xF = 9 x '1111'),就像您在键入long l = 0xFFFFFFFFF;时尝试一样。因此,您必须使用容量为64位的long。追加' L'或者' l'在0xFFFFFFFFFL之类的值的末尾应该处理编译器错误。 [Reference]

一般情况下,由于无论如何都会将类型转换为long,因此最好明确L