0

在 Java 语言规范 6.2链接中

这是以下代码示例:

class Test {
    public static void main(String[] args) {
        Class c = System.out.getClass();
        System.out.println(c.toString().length() +
                           args[0].length() + args.length);
    }
}

它指出:

标识符 Test、main 以及第一次出现的 args 和 c 不是名称。相反,它们在声明中用于指定声明实体的名称。名称 String、Class、System.out.getClass、System.out.println、c.toString、args 和 args.length 出现在示例中。

但是像 Class 和 String 这样的名称也是标识符吗?究竟什么是标识符?

4

3 回答 3

1

标识符是令牌的一种类型。从Java 的词法结构规范来看:

3.8. 身份标识

标识符是 Java 字母和 Java 数字的无限长度序列,其中第一个必须是 Java 字母。

Identifier:
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral

IdentifierChars:
    JavaLetter
    IdentifierChars JavaLetterOrDigit

 JavaLetter:
     any Unicode character that is a Java letter (see below)

 JavaLetterOrDigit:
     any Unicode character that is a Java letter-or-digit (see below)

“Java 字母”是 Character.isJavaIdentifierStart(int) 方法返回 true 的字符。

“Java 字母或数字”是 Character.isJavaIdentifierPart(int) 方法返回 true 的字符。

“Java 字母”包括大写和小写 ASCII 拉丁字母 AZ (\u0041-\u005a) 和 az (\u0061-\u007a),以及由于历史原因,ASCII 下划线(_ 或 \u005f)和美元符号($,或 \u0024)。$ 字符应仅用于机械生成的源代码中,或者很少用于访问遗留系统上预先存在的名称。

“Java 数字”包括 ASCII 数字 0-9 (\u0030-\u0039)。

字母和数字可能来自整个 Unicode 字符集,它支持当今世界上使用的大多数书写脚本,包括中文、日文和韩文的大型集。这允许程序员在他们的程序中使用以他们的母语编写的标识符。

标识符不能与关键字(第 3.9 节)、布尔文字(第 3.10.3 节)或空文字(第 3.10.7 节)具有相同的拼写(Unicode 字符序列),否则会发生编译时错误。

于 2013-10-30T20:54:25.657 回答
0

这可能会回答您的第二个问题:

http://www.cafeaulait.org/course/week2/08.html

标识符是变量、方法、类、包和接口的名称。与文字不同,它们不是事物本身,只是指称它们的方式。

于 2013-10-30T20:44:22.493 回答
0

标识符是用户定义的符号

它允许编译器区分绑定到符号表中相同类型的对象。

于 2013-10-30T20:47:15.703 回答