Java长文字

时间:2017-02-13 11:50:45

标签: java variables initialization long-integer literals

其中一个表达式被认为是java long literals:

1)0Xf000L

2)6L

3)(489 - 0L)/ 80

4)30508600000

5)0XBD000

我的回答:

1)被认为是因为" L"结束

2)与第一次相同

3)不是文字而是一个计算?

4)长期为大数

5)字面不长

如果我错了,请纠正我。另外,如果我们正在初始化的长变量没有" L"到底是它还算长字面?因为如果我在编译器中这样做,它让我这样做(例如5.问题)谢谢!

1 个答案:

答案 0 :(得分:1)

对于1)和2)你是完全正确的,他们是长文字。

3),正确:这是long类型的常量表达式。即使它是一个编译时常量,它也不算作文字。

4)不,这不是太大而不适合Set s = new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { // add the logic to say that partial match is considered same. } }); s.addAll(yourList); 。但是,由于它没有long后缀,因此不会计为L。它是long,但同时太大而无法放入int,因此正如评论中所讨论的那样,这是一个编译时错误。

5)是一个int字面值。它可以在预期int值的任何地方使用(例如,分配给long变量),但是你是正确的,这不会使它成为长文字。

基本规则如同RealSkeptic所说:“如果整数文字后缀为ASCII字母L或l(ell),则为long;否则它的类型为int(§4.2.1)。“(此处引自JLS section 3.10.1)。

(只是为了上一个肥皂盒,引用继续:后缀L是首选,因为字母l(ell)通常难以与数字1(一)区分开来。)