2017-02-13 77 views
-4

其中还有表达式之一被认为是java的较长的文字:爪哇较长的文字

1)0Xf000L

2)6L

3)(489 - 0L)/ 80

4) 30508600000

5)0XBD000


我的回答:

1)被认为是由于 “L” 的端

2)同第一

3)是不是一个字面但一个计算?

4)是大量长期

5)不长的文字

如果我错了地方请大家指正。另外,如果我们初始化的长变量最后没有“L”,它仍然被认为是长文字?因为如果我在编译器中这样做,它可以让我做到这一点(例如5.问题)谢谢!

+1

2,4是可以肯定的,3可能取决于投球规则(我忘记了)。但无论如何,你不能在你的本地Java中测试这个吗? –

+2

这很简单:如果它没有“L”,那么它不是一个长文字。如果它是一个计算而不是一个简单的数字,那么它不是一个文字。 – RealSkeptic

+0

@RealSkeptic不完全... 4没有L,但它太大而不适合int,所以它必须被视为很长时间。 –

回答

1

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

3),正确的是:这是长型的常量表达式。尽管它是一个编译时常量,但它不算作文字。

4)不,这不是太大,不适合在long。但是,由于它没有L后缀,因此不会算作long。这是一个int,但同时太大以至于不能适应int,正如评论中所讨论的那样,这是编译时错误。

5)是一个int字面。它可用于任何需要long值的地方(例如,分配给long变量),但是您是正确的,但这不会使其成为长文字。

的基本规则是作为RealSkeptic说:“文字的整数型的长,如果它是与ASCII字母L或l(ELL)后缀;否则它是int类型(§4.2.1)。“(这里引用的是JLS section 3.10.1)。

(而只是为了获得上的肥皂盒,报价继续:后缀L被优选的,因为字母l(ELL)通常很难从数字1(1)来区分)

+0

谢谢,那就是我一直在寻找的 – vucko95

+0

没有什么值得我感谢的,我刚才总结了评论中已经说过的话。我只是觉得这对未来的读者可能会很好,现在很清楚这个问题已经得到解答。 –