其中一个表达式被认为是java long literals:
1)0Xf000L
2)6L
3)(489 - 0L)/ 80
4)30508600000
5)0XBD000
我的回答:
1)被认为是因为" L"结束
2)与第一次相同
3)不是文字而是一个计算?
4)长期为大数
5)字面不长
如果我错了,请纠正我。另外,如果我们正在初始化的长变量没有" L"到底是它还算长字面?因为如果我在编译器中这样做,它让我这样做(例如5.问题)谢谢!
答案 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(一)区分开来。)