你必须熟练掌握的Java关键字
Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。根据功能将关键字分为7类。
1.访问控制
1.private私有的
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。在类的外部或者对于子类而言,它们是不可见的。
2.protected受保护的
protected 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。可以在声明 protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、方法或字段
3.public公有的
public 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。可能只会在其他任何类或包中引用 public 类、方法或字段。
2.类、方法和变量修饰符
1.abstract声明抽象
abstract关键字可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。采用 abstract方法的类本来就是抽象类,并且必须声明为abstract。
2.class类
class 关键字用来声明新的 Java 类,该类是相关变量和/或方法的集合。类是面向对象的程序设计方法的基本构造单位。类通常代表某种实际实体。要使用类,通常使用 new 操作符将类的对象实例化,然后调用类的方法来访问类的功能。
3.extends继承、扩展
extends 关键字用在 class 或 interface 声明中,用于指示所声明的类或接口是其名称后与有 extends 关键字的类或接口的子类。
子类可以重写父类的任何非 final 方法。一个类只能扩展一个其他类。
4.final最终,不可改变
final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。final方法在编译阶段绑定,称为静态绑定(static binding)。
5.implements实现
implements 关键字在 class 声明中使用,以指示所声明的类提供了在 implements 关键字后面的名称所指定的接口中所声明的所有方法的实现
6.interface接口
interface 关键字用来声明新的 Java 接口,接口是方法的集合
7.native本地
本地方法
为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的。
为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
8.new
new 关键字用于创建类的新实例。
new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。参数集合必须与类的构造方法的签名匹配。
9.static静态
static可以用于修饰属性,可以修饰代码块,也可以用于修饰方法,还可以用于修饰类。
1、static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。如果一个成员变量是static的,那么我们可以通过‘类名.成员变量名’的方式来使用它。
2、static修饰方法:static修饰的方法叫做静态方法。对于静态方法来说,可以使用‘类名.方法名’的方式来访问。静态方法只能继承,不能重写(Override),因为重写是用于表现多态的,重写只能适用于实例方法,而静态方法是可以不生成实例直接用类名来调用,这就会与重写的定义所冲突,与多态所冲突,所以静态方法不能重写,只能是隐藏。
3、static修饰代码块:静态代码块。静态代码块的作用也是完成一些初始化工作。**首先执行静态代码块,然后执行构造方法。**静态代码块在类被加载的时候执行,而构造方法是在生成对象的时候执行;要想调用某个类来生成对象,首先需要将类加载到Java虚拟机上(JVM),然后由JVM加载这个类来生成对象。
4、static修饰类:这个有点特殊,首先,static是可以用来修饰类的,但是static是不允许用来修饰普通类,只能用来修饰内部类,被static所修饰的内部类可以用new关键字来直接创建一个实例,不需要先创建外部类实例。static内部类可以被其他类实例化和引用(即使它是顶级类)。
10.strictfp严格,精准
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令人满意。
11.synchronized线程、同步
synchronized 关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。
synchronized 关键字可防止代码的关键代码段一次被多个线程执行。如果应用于静态方法,那么,当该方法一次由一个线程执行时,整个类将被锁定。如果应用于实例方法,那么,当该方法一次由一个线程访问时,该实例将被锁定。如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。
12.transient短暂
transient 关键字可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。
13.volatitle易失
volatile 关键字用于表示可以被多个线程异步修改的成员变量。
3.程序控制语句
1.brask跳出,中断
break 关键字用于提前退出 for、while 或 do 循环,或者在 switch 语句中用来结束 case 块。
2.continue继续
continue 关键字用来跳转到 for、while 或 do 循环的下一个迭代。
continue 总是跳到最深层 while、for 或 do 语句的下一个迭代。
3.return返回
return 关键字会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值
4.do运行
do 关键字用于指定一个在每次迭代结束时检查其条件的循环。
do 循环体至少执行一次。条件表达式后面必须有分号。
5.while循环
while 关键字用于指定一个只要条件为真就会重复的循环。
6.if如果
if 关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。
if 语句可以有可选的 else 子句,该子句包含条件为 false 时将执行的代码。
包含 boolean 操作数的表达式只能包含 boolean 操作数。
7.else否则
else 关键字总是在 if-else 语句中与 if 关键字结合使用。else 子句是可选的,如果 if 条件为 false,则执行该子句。
8.for循环
or 关键字用于指定一个在每次迭代结束前检查其条件的循环。
9.instanceof实例
instanceof 关键字用来确定对象所属的类。
10switch观察
switch 语句用于基于某个表达式选择执行多个代码块中的某一个。
switch 条件的计算结果必须等于 byte、char、short 或 int。
case 块没有隐式结束点。break 语句通常在每个 case 块末尾使用,用于退出 switch 语句。
11.case返回观察里的结果
case 用来标记 switch 语句中的每个分支。
case 块没有隐式结束点。break 语句通常在每个 case 块末尾使用,用于退出 switch 语句。
如果没有 break 语句,执行流将进入所有后面的 case 和/或 default 块。
12.default默认
default 关键字用来标记 switch 语句中的默认分支。
default 块没有隐式结束点。break 语句通常在每个 case 或 default 块的末尾使用,以便在完成块时退出 switch 语句。
如果没有 default 语句,其参数与任何 case 块都不匹配的 switch 语句将不执行任何操作。
4.错误处理
1.try捕获异常
try 关键字用于包含可能引发异常的语句块。
每个 try 块都必须至少有一个 catch 或 finally 子句。
2.catch处理异常
catch 关键字用来在 try-catch 或 try-catch-finally 语句中定义异常处理块。
3.throw派出一个异常对象
throw 语句将 java.lang.Throwable 作为参数。Throwable 在调用栈中向上传播,直到被适当的 catch 块捕获。引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。
4.throws 声明一个异常可能被抛出
throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常。
throws 关键字将逗号分隔的 java.lang.Throwables 列表作为参数。
5.finally
在异常处理机制当中,它的作用就像是人吃饭一样,必须得做的,不论有异常还是没有异常都要执行的代码就可以放到finally块当中去。finally块,必须要配合try块一起使用,不能单独使用,也不能直接和catch块一起使用。
finally 关键字用来定义始终在 try-catch-finally 语句中执行的块。
finally 块通常包含清理代码,用在部分执行 try 块后恢复正常运行
5.包相关
1.import导入
import 关键字使一个包中的一个或所有类在当前 Java 源文件中可见。可以不使用完全限定的类名来引用导入的类。
当多个包包含同名的类时,许多 Java 程序员只使用特定的 import 语句(没有“*”)来避免不确定性。
2.package包
package 关键字指定在 Java 源文件中声明的类所驻留的 Java 包。
6.基本类型
1.boolean布尔型
boolean 是 Java 原始类型。boolean 变量的值可以是 true 或 false。
2.byte字节型
byte 是 Java 原始类型。byte 可存储在 [-128, 127] 范围以内的整数值。
3.char字符型
char 是 Java 原始类型。char 变量可以存储一个 Unicode 字符。
4.double双精度
double 是 Java 原始类型。double 变量可以存储双精度浮点值。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
5.float浮点
float 是 Java 原始类型。float 变量可以存储单精度浮点值。
使用此关键字时应遵循下列规则:
Java 中的浮点文字始终默认为双精度。要指定单精度文字值,应在数值后加上 f 或 F,如 0.01f。
6.int整形
int 是 Java 原始类型。int 变量可以存储 32 位的整数值。
7.long长整形
long 是 Java 原始类型。long 变量可以存储 64 位的带符号整数。
Long 类是 long 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
8.short短整型
short 是 Java 原始类型。short 变量可以存储 16 位带符号的整数。
Short 类是 short 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
9.null空
null 是 Java 的保留字,表示无值。
将 null 赋给非原始变量相当于释放该变量先前所引用的对象。
不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。
10.true真
true 关键字表示 boolean 变量的两个合法值中的一个。
11.false假
false 关键字代表 boolean 变量的两个合法值之一。
7.变量引用
1.super父类,超类
super 关键字用于引用使用该关键字的类的超类。
作为独立语句出现的 super 表示调用超类的构造方法。super.() 表示调用超类的方法。只有在如下情况中才需要采用这种用法:要调用在该类中被重写的方法,以便指定应当调用在超类中的该方法。
2.this本类
this 关键字用于引用当前实例。当引用可能不明确时,可以使用 this 关键字来引用当前的实例。
3.void无返回值
void 关键字表示 null 类型。void 可以用作方法的返回类型,以指示该方法不返回值。