我的一个孩子在高中学习Java,他的一次考试是这样的:
下列哪个在Java中是有效的标识符?
123 java。
b主要
c . java1234
d。{abce
whoot e。)
他答了b,答错了。
我看了看这个问题,认为main是一个有效的标识符,它应该是正确的。
我们查看了标识符的Java规范,它加强了这一点。我们还编写了一个示例程序,其中包含一个名为main的变量和一个方法。他写了一份书面反驳,包括Java文档参考,测试程序和老师忽略了它,说答案仍然是错误的。
main是有效的标识符吗?
public class J {
public static void main(String[] args)
{
String main = "The character sequence \"main\" is an identifier, not a keyword or reserved word.";
System.out.println(main);
}
}
编译后执行,输出如下:
The character sequence "main" is an identifier, not a keyword or reserved word.
字符序列main是一个标识符,而不是关键字或保留字。
JLS的相关章节是3.8:
标识符是Java字母和Java数字的无限长度序列,其中第一个必须是Java字母。
标识符:
IdentifierChars,但不是关键字或BooleanLiteral或NullLiteral
IdentifierChars:
JavaLetter {JavaLetterOrDigit}
JavaLetter:
任何“Java字母”的Unicode字符
JavaLetterOrDigit:
任何“Java字母或数字”的Unicode字符
字符序列main符合上述描述,并且不在第3.9节的关键字列表中。
(出于同样的原因,字符序列java1234也是一个标识符。)