Java IntegerTypeSuffix的情况真的重要吗?

时间:2014-07-17 20:13:30

标签: java object casting primitive

如声明here所述,在整数常量后放置L会将其转换为Long对象,而使用l则会将其转换为原始对应{{1}但是,Oracle声称here"整数文字的类型为long,如果后缀为ASCII字母longL"

前者是在制造,还是后者在骗我?

如果甲骨文对我撒谎,那么lLong的记忆和/或性能差异是否真的重要甚至可以检测到?

换句话说,Java IntegerTypeSuffix的情况真的重要吗?

2 个答案:

答案 0 :(得分:1)

不,它没有。通常选择L,因为l可能被误认为是。

您链接的答案似乎有一个缺陷。

答案 1 :(得分:0)

将后缀lL放在数字文字的末尾表示long字面值,而不是Long对象。

Section 3.10.1 of the JLS指定带有lL后缀的数字文字的数据类型:

  

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

在指定大数量的文字时,类型可能很重要,这些文字太大而无法放入int字面值。

// 10 billion is illegal; too big to fit in an int,
// even if later assigned to a long
long tooBigInt = 10000000000;  

// 10 billion here is a legal long literal
long justRight = 10000000000L;