时不时有人纠结true、false和null到底是不是java关键字(keyword),出于很多笔试题的基础部分总会出现这种选择题,还有很多书籍给出的关键字列表也有出入,所以虽然是太过于理论性的知识,也有很多人关注。
首先给出结论,true、false和null三个全不是关键字(虽然很多面试题和书籍将其中全部或一部分列为关键字--如java核心技术第8版英文版附录将null列为关键字),其中true和false是Boolean字面量,null是空的字面量。
下面来给出原因:
1、很多人认为它们三个是关键字原因出于以下两点:
①普遍书籍给的标识符定义:Java标识符由数字,字母和下划线(_),美元符号($)组成。Java区分大小写,且首位不能是数字。Java关键字不能当作Java标识符 (整理自百度百科,印象中在大学和培训机构里学习时也是这么定义的。但是这是不完善的)。所以很多人由此来判断,true、flase和null并不能当标识符使用(若使用编译器会报错),所以他们是关键字。
②在IDE里,如Eclipse中打出true、false和null是蓝色加粗状态和其他关键字一样,所以他们是关键字。
首先探讨观点①,查阅Java语言规范的官方文档,看一下标识符的完整定义:
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter. An identifier cannot have the same spelling (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or the null literal (§3.10.7).
可以看到最后一句话:Java关键字,布尔字面量和空字面量不能作为标识符 。
然后看观点②:是因为关键字和布尔字面量、空字面量都不能作为关键字所以才在IDE中加粗显示的,而不是加粗显示的都是关键字。
2、我们再来看一下Java关键字的标准定义,摘自Java语言规范官方文档:
The following character sequences, formed from ASCII letters, are reserved for use as keywords and cannot be used as identifiers (§3.8):
Keyword: one of
abstract continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
The keywords const and goto are reserved, even though they are not currently used. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in programs.
While true and false might appear to be keywords, they are technically Boolean literals (§3.10.3). Similarly, while null might appear to be a keyword, it is technically the null literal (§3.10.7).
里面清楚地写道:Java包括50个关键字和2个保留关键字,共52个,其中true和false看上去虽然像关键字,但是它们是布尔字面量,null虽然看上去也像关键字,但它是空字面量。
所以,我们现在可以得出结论,Java有52个关键字(50+2),true、false和null不是关键字。
虽然总结这些没有什么实际意义,只是理论上的概念,这种知识点太过边边角角,不知道这些完全不妨碍你成为一个技术牛人,但是我认为这是一个态度的问题,如果有严谨的学习、工作态度,不是遇到这些问题时只是听别人怎么说就是什么,或者简单的在网上查阅下资料,自己去查阅文档,学习探讨下,也不至于有很多的书籍,授课内容,和企业面试题都是不完善、错的。
相关推荐
Java关键字大全 abstract - 1 - boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends -...
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言...
boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends - 6 - false - 7 - final - 7 - finally - 7 - ...
选项B Boolean为基本类型boolean的封装类类型,Boolean也是java的的类型,但是类类型,不是java的基本类型, 基本类型 类类型 byte Byte int Integer short ...
下面小编就为大家带来一篇详谈java中boolean和Boolean的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java中常量的分类: 1,整数常量。所有整数 2,小数常量。所有小数 3,布尔(boolean)型常量。较为特有,只有两个数值。true false。 4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。 5,字符串常量。...
主要介绍了Java if(boolean)和if(boolean=true)区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java Methods-Boolean Expressions and if-else Statements.ppt
Java 中的 Boolean toString() 方法及其示例
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: ...
《什么是boolean类型》Java中使用boolean类型表示真假。“boolean”又称“布尔”,boolean是Java的关键字,所有字母为小写。
下面小编就为大家带来一篇Java中Boolean与字符串或者数字1和0的转换实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
不能使用Java的关键字和保留字 java中的关键字 goto和const在java中虽然不再使用但是还作为保留字存在 java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两个也是关键字 enum ...
java boolean:布尔型
1. 标识符:用来标识Java类中的各个组成部分(包名,类名,方法名,变量名,参数名)的字符序列。 1)字母,数字,_,$组成。 2)不能以数字开头,长度不限。 3)不能是关键字。 2. 关键字:在Java程序中有特殊...
JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的...
Java的标识符 由字母、数字、下划线、美元符(特殊用符)组成,首字符不能使数字,不能包括操作符和空格符等,不能与关键字重名,严格区分大小写。 数据类型 基本类型包括八种、布尔型(Boolean)、字节型(byte...
java.lang.Boolean 9 2. 2. 2. 布尔字面量 10 2. 2. 3. 布尔变量 10 2. 2. 4. 使用布尔类型 10 2. 2. 5. valueOf(): 将字符串解析为布尔对象 11 2. 2. 6. toString(): 返回布尔的字符串值 11 2. 3. 整数数据类型 12...
55.053.JAVA基础教程_Java基本语法-boolean型变量的使用(55).rar
NULL 博文链接:https://chinesethink.iteye.com/blog/1601198