关键字和保留字的区别
正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的。Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
识别java语言的关键字,不要和其他语言如c/c++的关键字混淆。
标志符包含关键字而关键字里面又包含两个保留字,根据java文档true、false、null不属于关键字但是属于标志符,规定的关键字只有50个包含两个保留字,但是这53个都属于标志符。
1.保留字(reserved words):是语言已经定义过的字,一些保留字可能没有相对应的语法,考虑到扩展性,为了向后兼容不能再将其作为变量名。const和goto是java的保留字。 所有的关键字都是小写
2.50个关键字(keywards):在语言中有特殊的含义成为语法的一部分。
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
关键字的分类
关键字分为:访问控制、类方法和变量修饰符、程序控制语句、错误处理、包相关、基本类型、变量引用。
访问控制 修饰符的关键字(共3个):
关键字 | 意思 | 备注,常用 |
public | 公有的 | 可跨包,(默认选择) |
protected | 受保护的 | 当前包内可用 |
private | 私有的 | 当前类可用 |
(1)private:可以应用于类、方法或字段(类中声明的变量),只能在声明的类内部中引用这些类、方法或字段,在外部或者对于子类而言是不可见的,类的默认访问范围是package访问,除非存在特殊的访问控制修饰符。可以从一个包中的任何类访问类成员 。
(2)protected:应用于类、方法或字段(类中声明的变量),可以在声明 protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、方法或字段。所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则可以从同一个包中的任何类访问类成员。 当前类、同包、非同包的子类。
(3)public:应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 可能只会在其他任何类或包中引用 public 类、方法或字段。所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。 所有类均可访问。
类、方法和变量修饰符:
定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(共6个)
关键字 | 意思 | 备注,常用 |
class | 类 | public class A(){} 花括号里有已实现方法体,类名需要与文件名相同 |
interface | 接口 | public interface B(){} 花括号里有方法体,但没有实现,方法体句子后面是英文分号“:”结尾 |
abstract | 声明抽象 | public abstract class C(){} 介于类与接口中间,可以有也可以没有已经实现的方法体 |
implements | 实现 | 用于类或接口实现接口public class A interface B(){} |
extends | 继承 | 用于类继承类 public class A extends D(){} |
new | 创建新对象 | A a=new A(); A表示一个类 |
(1)class:用来声明新的 Java类,该类是相关变量和/或方法的集合。类是面向对象的程序设计方法的基本构造单位。类通常代表某种实际实体,如几何形状或人。类是对象的模板。每个对象都是类的一个实例。要使用类,通常使用 new 操作符将类的对象实例化,然后调用类的方法来访问类的功能。
(2) interface :用来声明新的 Java 接口,接口是方法的集合。接口是 Java 语言的一项强大功能。任何类都可声明它实现一个或多个接口,这意味着它实现了在这些接口中所定义的所有方法。 实现了接口的任何类都必须提供在该接口中的所有方法的实现。一个类可以实现多个接口。
(3)abstract:可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。采用 abstract方法的类本来就是抽象类,并且必须声明为abstract。
(4)implements:在 class 声明中使用,以指示所声明的类提供了在 implements 关键字后面的名称所指定的接口中所声明的所有方法的实现。类必须提供在接口中所声明的所有方法的实现。一个类可以实现多个接口。
(5)extends:用在 class 或 interface 声明中,用于指示所声明的类或接口是其名称后跟有 extends 关键字的类或接口的子类。子类继承父类的所有 public 和 protected 变量和方法。 子类可以重写父类的任何非 final 方法。一个类只能扩展一个其他类。
(6) new:用于创建类的新实例。 new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。 参数集合必须与类的构造方法的签名匹配。 = 左侧的变量的类型必须与要实例化的类或接口具有赋值兼容关系。