Java 长文字
Java long literals
其中哪一个表达式被认为是 java 长文字:
1) 0Xf000L
2) 6L
3) (489 - 0L) / 80
4) 30508600000
5) 0XBD000
我的回答:
1) 被认为是因为 "L" 结束
2) 同第一个
3) 不是文字而是一种计算?
4) 长期为大数
5) 不是长文字
如果我有什么地方不对请指正。另外,如果我们正在初始化的 long 变量最后没有 "L" ,它仍然被认为是 long literal 吗?因为如果我在编译器中这样做,它会让我这样做(例如 5. 问题)谢谢!
对于 1) 和 2) 你是完全正确的,它们是长文字。
3)、正确:这是一个long类型的常量表达式。尽管它是一个 compile-time 常量,但它不算作文字。
4) 不,这并不太大,装不下 long
。但是,由于它没有 L
后缀,因此不算作 long
。这是一个 int
,但同时太大而无法放入 int
,因此正如评论中所讨论的,这是一个 compile-time 错误。
5) 是一个 int
文字。它可以在任何需要 long
值的地方使用(例如,分配给 long
变量),但你是对的,这不会使它成为一个长文字。
基本规则如 RealSkeptic 所说:“整数文字如果以 ASCII 字母 L 或 l (ell) 为后缀,则为 long 类型;否则它是 int 类型 (§4.2.1)。” (此处引用自JLS section 3.10.1)。
(只是为了登上肥皂盒,引用继续:后缀 L 是首选,因为字母 l(ell)通常很难与数字 1(一)区分开来。)
其中哪一个表达式被认为是 java 长文字:
1) 0Xf000L
2) 6L
3) (489 - 0L) / 80
4) 30508600000
5) 0XBD000
我的回答:
1) 被认为是因为 "L" 结束
2) 同第一个
3) 不是文字而是一种计算?
4) 长期为大数
5) 不是长文字
如果我有什么地方不对请指正。另外,如果我们正在初始化的 long 变量最后没有 "L" ,它仍然被认为是 long literal 吗?因为如果我在编译器中这样做,它会让我这样做(例如 5. 问题)谢谢!
对于 1) 和 2) 你是完全正确的,它们是长文字。
3)、正确:这是一个long类型的常量表达式。尽管它是一个 compile-time 常量,但它不算作文字。
4) 不,这并不太大,装不下 long
。但是,由于它没有 L
后缀,因此不算作 long
。这是一个 int
,但同时太大而无法放入 int
,因此正如评论中所讨论的,这是一个 compile-time 错误。
5) 是一个 int
文字。它可以在任何需要 long
值的地方使用(例如,分配给 long
变量),但你是对的,这不会使它成为一个长文字。
基本规则如 RealSkeptic 所说:“整数文字如果以 ASCII 字母 L 或 l (ell) 为后缀,则为 long 类型;否则它是 int 类型 (§4.2.1)。” (此处引用自JLS section 3.10.1)。
(只是为了登上肥皂盒,引用继续:后缀 L 是首选,因为字母 l(ell)通常很难与数字 1(一)区分开来。)