1.常见的关键字
- 用于定义数据类型的关键字
class interface byte short int long float double char boolean void
- 用于定义数据类型值的关键字
true false null - 用于定义流程控制的关键字
if else switch case default while do for break continue return
- 用于定义访问权限修饰符的关键字
private protected public
- 用于定义类,函数,变量修饰符的关键字
abstract final static synchronized
- 用于定义类与类之间关系的关键字
extends implements
- 用于定义建立实例及引用实例,判断实例的关键字
new this super instanceof
- 用于异常处理的关键字
try catch finally throw throws
- 用于包的关键字
package import
- 其他修饰符关键字
native strictfp transient volatile assert
2.关键字的作用说明
- break
用在 switch 或者循环语句中,表示中断结束的意思, 跳出循环直接可以结束该语句
- continue
用在循环语句中,表示中断结束的意思,不过跟 break 有区别,它是退出本次循环后继续执行下一次循环
- return
常用功能是结束一个方法(退出一个方法),跳转到上层调用的方法
- interface
接口的意思,用来定义接口。
- static
静态修饰符,被修饰后成员被该类所有的对象所共有。也可以通过类名调用
- private
权限修饰符,可以修饰成员变量和成员方法,被修饰的成员只能在本类中被访问 隐藏具体实现细节,提供对外公共访问方法,提高安全性
- this
当成员变量和局部变量名称一样时,需要用 this 修饰,谁调用这个方法,那么该方法的内部的this就代表谁,如果不适用 this ,那么局部变量隐藏了成员变量
- super
代表的是父类存储空间的标识(可以理解成父类的引用,可以操作父类的成员)
- final
由于继承中有一个方法重写的现象,而有时候我们不想让子类去重写父类的方法.
这对这种情况java就给我们提供了一个关键字: final可以修饰类,变量,成员方法。
被修饰类不能被继承;被修饰的方法不能被重写;被修饰的变量不能被重新赋值,因为这个量其实是一个常量。
修饰基本数据类型 指的是值不能被改变;修饰引用数据类型 指的是地址值不能被改变 - finally
被finally控制的语句体一定会执行;特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
finally的作用: 用于释放资源,在IO流操作和数据库操作中会见到 - abstract
抽象的意思,用来修饰抽象类与抽象方法
abstract 不能和哪些关键字共存?
private 冲突 被private修饰的方法不能被子类继承,就不能被重写,而我们的抽象方法还需要被子类重写
final 冲突 被final修饰的方法,不能被子类重写 , ,而我们的抽象方法还需要被子类重写
static 无意义 因为被static修饰的方法可以通过类名直接访问,但是我们的抽象方法没有方法体,所以这样访问没有意思 - extends
继承的意思,通过它可以类与类之间产生继承关系。
- implements
实现的意思,通过它可以让类与接口之间产生实现关系。
- instanceof
测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
3.重要关键字说明
3.1 instanceof
- instanceof是Java的一个二元操作符,和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
3.2 final,finally,finalize有什么不同?
- final可以修饰类,方法,变量
- final修饰类代表类不可以继承拓展
- final修饰变量表示变量不可以修改
- final修饰方法表示方法不可以被重写
- finally则是Java保证重点代码一定要被执行的一种机制
- 可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC连接、保证 unlock 锁等动作。
- finalize 是基础类 java.lang.Object的一个方法
- 它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK 9开始被标记为 deprecated。
- final 关键字深入理解
- 可以将方法或者类声明为 final,这样就可以明确告知别人,这些行为是不许修改的。
- 如果你关注过 Java 核心类库的定义或源码, 有没有发现java.lang 包下面的很多类,相当一部分都被声明成为final class?在第三方类库的一些基础类中同样如此,这可以有效避免 API 使用者更改基础功能,某种程度上,这是保证平台安全的必要手段。
- 使用 final 修饰参数或者变量,也可以清楚地避免意外赋值导致的编程错误,甚至,有人明确推荐将所有方法参数、本地变量、成员变量声明成 final。
- final 变量产生了某种程度的不可变(immutable)的效果,所以,可以用于保护只读数据,尤其是在并发编程中,因为明确地不能再赋值 final 变量,有利于减少额外的同步开销,也可以省去一些防御性拷贝的必要。
3.3 static
- 可以用来修饰:成员变量,成员方法,代码块,内部类等。具体如下所示
- 修饰成员变量和成员方法
- 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。
- 被static 声明的成员变量属于静态成员变量,静态变量存放在Java内存区域的方法区。
- 静态代码块
- 静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)
- 该类不管创建多少对象,静态代码块只执行一次.
- 静态内部类(static修饰类的话只能修饰内部类)
- 静态内部类与非静态内部类之间存在一个最大的区别:
- 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围内,但是静态内部类却没有。没有这个引用就意味着:1.它的创建是不需要依赖外围类的创建。2.它不能使用任何外围类的非static成员变量和方法。
- 静态导包(用来导入类中的静态资源,1.5之后的新特性):
- 这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。
- 修饰成员变量和成员方法