所有名称都是标识符?

时间:2013-10-30 20:40:42

标签: java jls

在Java语言规范6.2 Link

以下是代码示例:

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这样的名字也是标识符吗?什么是标识符?

3 个答案:

答案 0 :(得分:1)

标识符是一种令牌。来自lexical structure of 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 letter”是该方法的字符   Character.isJavaIdentifierStart(int)返回true。

     

“Java letter-or-digit”是该方法的字符   Character.isJavaIdentifierPart(int)返回true。

     

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

     

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

     

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

     

标识符不能具有相同的拼写(Unicode字符   sequence)作为关键字(§3.9),布尔文字(§3.10.3)或null   文字(§3.10.7),或发生编译时错误。

答案 1 :(得分:0)

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

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

  

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

答案 2 :(得分:0)

标识符是用户定义的符号

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