java中的String是不是关键字

只要学过一点Java知识的读者,对下面这段代码一定不陌生。

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello world");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

这里笔者想就这段代码探讨几个概念性的问题: 
String 是关键字(keyword)吗? 
不知道此刻大家大家心中是否有了非常确定的答案~ 
由于工作关系,笔者曾经指导过数十批在校大学生软件开发项目实训,这些同学基本上都是已经学完JavaSE。 
每批学生,我都会问这个问题。 
大量学生都很肯定的认为String 是关键字,还有少部分学生有点茫然,那到底是不是关键字呢?

下图是Java官网给出额Java关键字列表,显然 String 并不在其中。

这里写图片描述

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.htmlJava关键字列表

既然String 不在关键字列表中,为什么有那么多同学认为它是关键字呢? 
为什么说 String 是关键字呢? 
给出的理由是:经常出现、重要、开发工具里高亮显示…

原来,是概念不清晰导致的错觉。


搞清楚关键字、标识符 这两个概念,就明白为啥String不是关键字了。

关键字(keywords)是这Java语言规范约定用于表达语法含义的单词,截止JDK8.0,这部分单词总共有50个。 
其中绝大部分关键词是Java语法发布之初就约定好的,少部分关键词是随Java语言发展后加入的。 
strictfp JDK1.2 加入 
assert JDK1.4 加入 
enum JDK5.0 加入 
还有少数单词,目前还没有明确的语法含义,但是Java语言也约定它是关键字,随着Java的发展,将来可能会被赋予语法含义。这部分关键词又被称为保留关键字(reserved keywords),如关键字列表中的constgoto 。


标识符(identifier),是指类名(包括接口、枚举、抽象类)、方法名、变量、常量名、包名等可以自定义的字符组合。 
虽然可以自定义,但是也要遵循如下规则:

  1. 由字母, 下划线, 数字, $符号组成;
  2. 只能以字母、下划线、$符号开头,不能以数字开头;
  3. 标识符长度没有限;
  4. 区分大小写
  5. 不能是关键字

String 是Java基础库中的一个常用类的类名,属于标识符(identifier),显然不是关键字。

你可能感兴趣的:(java)