Java基础总结 (一)Java中的关键字和保留字
什么是关键字和保留字
在Java中一些有特殊含义和用途的词叫做关键字,而保留字是预留的关键字。现在保留字并没有特殊含义但是在将来可能被赋予特殊的含义或用途。所以在程序中一定要避免使用关键字和保留字作为变量名或者类名使用。
在Java官方文档中一共有50个关键字其中有两个是保留字。还有三个特殊的单词null、true、false,这三个不属于关键字但是属于标识符。标识符一共有53个,包括null、true、false和所有关键字。
关键字的含义和作用
访问修饰符的关键字
关键字 | 含义 | 备注 |
---|---|---|
public | 公有的 | 可跨包 |
protected | 受保护的 | 在当前包内可用 |
private | 私有的 | 仅在当前类可用 |
定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象
关键字 | 含义 | 备注 |
---|---|---|
class | 类 | public class A{ } class B{ } 声明两个类A和B,在一个java文件中有且只能有一个类的访问修饰符为public |
interface | 接口 | public interface C{ } 声明一个接口C |
abstract | 抽象声明 | public abstract class D{ } 声明一个抽象类 |
implements | 实现接口 | public class A implements C { } 声明一个类A实现接口C |
extends | 继承 | public class B extends calss A { } 声明一个类B继承类A |
new | 创建新对象 | A a = new A(); 创建一个类A的对象a |
包关键字
关键字 | 含义 | 备注 |
---|---|---|
import | 引入包的关键字 | 需要使用其他包中的类时用import引入包名 |
package | 包名关键字 | 标识类在包中的位置 |
数据类型关键字
关键字 | 含义 | 备注 |
---|---|---|
char | 字符型 | 16bit、1字节 |
boolean | 布尔型 | true、false |
byte | 字节型 | 8bit、1字节 -128~127 |
short | 短整型 | 16bit、2字节 -215~2^15-1 |
int | 整型 | 32bit、4字节 -231~2^31-1 |
long | 长整型 | 64bit、8字节 -263~2^63-1 |
float | 单精度浮点型 | 32bit、4字节 -3.403E38~3.403E38 |
double | 双精度浮点型 | 64bit、8字节 -1.798E308~1.798E308 |
void | 空 | 返回类型为空(无返回值)并不是数据类型 |
enum | 枚举型 | 定义枚举中的对象都是唯一的 并不是数据类型 |
流程控制关键字
关键字 | 含义 | 备注 |
---|---|---|
if | if条件语句的标识 | if( ){ } |
else | if条件语句不成立时的分支标识 | if( ){ } else if { } else { } |
while | while循环的标识 | while( ){ } |
do | do-while循环的标识 | do{ } while( ) |
for | for循环的标识 | for(;;){ } |
switch | 分支结构语句的标识 | switch(表达式){ case 表达式1:语句1; break; case 表达式2:语句2: break; default:语句 } switch的表达式支持byte、int、short、char,JavaSE1.7版本以后支持String |
case | switch语句中的分支 | |
default | switch语句中的默认分支 | 当所有case都不符合条件时执行default中的语句 |
break | 跳出循环 | 跳出循环体 |
continue | 跳出本次循环 | 跳出循环体,执行下一次循环 |
return | 返回 | return “123”; 返回一个值 |
instanceof | 判断是否为该类型实例 | a instanceof A; 返回值为boolean类型 |
assert | 用于断言 |
修饰类、方法、属性、变量的关键字
关键字 | 含义 | 备注 |
---|---|---|
static | 静态的 | 如果一个成员被声明为static时,静态成员所在的类被加载的同时创建static成员,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。 声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,但最好采用前者,因为后者容易混淆静态变量和一般变量。静态变量是跟类相关联的,类的所有实例共同拥有一个静态变量。 声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。静态方法不能被子类的静态方法覆盖。 |
final | 最终的 | 被final修饰的属性变量就是常量 被final修饰的类不能被继承 被final修饰的方法不能被子类重写 |
super | 指向当前实例对象的父类 | 表明当前对象的父类型的引用或者父类型的构造方法 |
this | 指向当前实例对象的引用 | 当引用可能不明确时,可以使用this关键字来引用当前的实例。 |
native | 本地 | 用native修饰的方法指示出该方法是用Java以外的语言实现的 |
strictfp | 严格、精准 | 使Java编译器以及JVM对浮点运算更加精确 |
synchronized | 线程、同步 | synchronized关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。 如果应用于静态方法(如上例中的MySyncStaticMethod),那么,当该方法一次由一个线程执行时,整个类将被锁定。 如果应用于实例方法(如上例中的MySyncMethod),那么,当该方法一次由一个线程访问时,该实例将被锁定。 如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。 |
transient | 短暂 | 用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。 |
volatile | 易失 | volatile关键字用于表示可以被多个线程异步修改的成员变量。volatile的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。 |
异常处理关键字
关键字 | 含义 | 备注 |
---|---|---|
catch | 异常处理 | catch关键字用来在try-catch或try-catch-finally语句中定义异常处理块。 如果某个特定异常类未被任何catch子句处理,该异常将沿着调用栈递归地传播到下一个封闭try块。如果任何封闭try块都未捕获到异常,Java解释器将退出,并显示错误消息和堆栈跟踪信息 |
try | 捕获异常 | try关键字用于包含可能引发异常的语句块。 |
finally | try块的一部分 | 每个try块都必须至少有一个catch或finally子句。 如果执行try块的任何部分,不论是否出现异常,也不论try或catch块是否包含return、continue或break语句,都一定会执行finally块中的代码。 如果不出现异常,控件将跳过try块,进入finally块。 如果在执行try块期间出现异常,并且相应的catch块包含break、continue或return语句,控件将首先穿过finally块,之后再执行break、continue或return。 |
throw | 抛出一个异常对象 | throw语句将java.lang.Throwable作为参数。Throwable在调用栈中向上传播,直到被适当的catch块捕获 |
throws | 声明一个异常可能被抛出 | throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常。 throws 关键字将逗号分隔的 java.lang.Throwables 列表作为参数。 引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。 要在 try-catch 块中包含带 throws 子句的方法的调用,必须提供该方法的调用者。 |