参考链接:https://blog.csdn.net/Myuhua/article/details/81411707
另外,Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。
abstract 表明类或者成员方法具有抽象属性 assert 断言,用来进行程序调试
boolean 基本数据类型之一,布尔类型 break 提前跳出一个块 byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支 catch 用在异常处理中,用来捕捉异常 char 基本数据类型之一,字符类型 class 声明一个类 const 保留关键字,没有具体含义 continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支 do 用在do-while循环结构中 double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支 enum 枚举 extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 float 基本数据类型之一,单精度浮点数类型 for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词 implements 表明一个类实现了给定的接口 import 表明要访问指定的类或包 instanceof 用来测试一个对象是否是指定类型的实例对象 int 基本数据类型之一,整数类型 interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 new 用来创建新实例对象
package 包 private 一种访问控制方式:私用模式 protected 一种访问控制方式:保护模式 public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型 static 表明具有静态属性 strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 [1] super 表明当前对象的父类型的引用或者父类型的构造方法 switch 分支语句结构的引导词 synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用 throw 抛出一个异常 throws 声明在当前定义的成员方法中所有需要抛出的异常 transient 声明不用序列化的成员域 try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值 volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中
abstract关键字可以修饰类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法不在声明它的类中实现,但必须在某个子类中重写。
public abstract class MyClass{}
public abstract String myMethod();
采用abstract方法的类本来就是抽象类,并且必须声明为abstract。
abstract类不能实例化。
仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类称为具体类,以区别于abstract类。
如果abstract类的子类没有实现其超类的所有abstract方法,该子类也是abstract类。
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写,因此,不能在子类中实现。
final类的方法都不能是abstract,因为final类不能有子类。
断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说, 断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试时开启。为了保证程序 的执行效率,在软件发布后断言检查通常是关闭的。
断言是一个包含布尔表达式的语句,在执 行这个语句时假定该表达式为 true;如果表达式的值为 false,那么系统会报告一个 AssertionError。 断言的使用如下面的代码所示:
assert(a > 0); // throws an AssertionError if a <= 0断言可以有两种形式:
assert Expression1; assert Expression1 : Expression2 ;break语句用于终止某个语句块的执行。用在循环语句体中,可以强行推出循环。
public class BreakTest { public static void main(String[] args) { int stop = 5; for (int i = 0; i < 10; i++) { if (i == stop) { break; } System.out.println("i="+i); } } } 结果: i=0 i=1 i=2 i=3 i=4continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环。
public class ContinueTest { public static void main(String[] args) { int skip = 5; for (int i = 0; i < 10; i++) { if (i == skip) { continue; } System.out.println("i="+i); } } } 结果: i=0 i=1 i=2 i=3 i=4 i=6 i=7 i=8 i=9java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。 注意:1)对于class的权限修饰只可以用public和default。 2)类的成员(包括内部类)的修饰符可以是以上四种。 3)类的成员不写访问修饰时默认为 default,默认对于同一个包中的其他类相当于公开 (public),对于不是同一个包中的其他类相当于私有(private)。 4)受保护(protected)对子类 相当于公开,对不是同一包中的没有父子关系的类相当于私有。
final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。例如,在类中定义PI值,可以使用如下语句:
final double PI=3.14;全局常量: 我们知道一个被定义为final的对象引用只能指向唯一一个对象,不可以将它再指向其它对象,但是一个对象的值却是可以改变的,那么为了使一个常量真正做到不可更改,可以将常量声明为static final。
final的方法不能被重写 将方法定义为final类型可以防止任何子类修改该类的定义与实现方式,同时定义为final的方法执行效率要高于非final方法。在修饰权限中曾经提到过private修饰符,如果一个父类的某个方法被设置为private修饰符,子类将无法访问该方法,自然无法覆盖该方法,所以一个定义为private的方法隐式被指定为final类型,这样无须将一个定义为private的方法再定义为final类型。
private final void test() {}定义为final的类不能被继承
如果希望一个类不允许任何类继承,并且不允许其他人对这个类有任何改动,可以将这个类设置为final形式。
final类的语法如下:final 类名{}
如果将某个类设置为final形式,则类中的所有方法都被隐式设置为final形式,但是final类中的成员变量可以被定义为final或非final形式。
使用final关键字的好处: (1)final关键字提高了性能。JVM和Java应用都会缓存final变量。 (2)final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。 (3)使用final关键字,JVM会对方法、变量及类进行优化。
不可变类: 创建不可变类要使用final关键字。不可变类是指它的对象一旦被创建了就不能被更改了。String是不可变类的代表。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。
关于final的重要知识点: (1)final关键字可以用于成员变量、本地变量、方法以及类。 (2)final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。 (3) 你不能够对final变量再次赋值。 (4)本地变量必须在声明时赋值。 (5)在匿名类中所有变量都必须是final变量。 (6)final方法不能被重写。 (7)final类不能被继承。 (8)final关键字不同于finally关键字,后者用于异常处理。 (9)final关键字容易与finalize()方法搞混,后者是在Object类中定义的方法,是在垃圾回收之前被JVM调用的方法。 (10)接口中声明的所有变量本身是final的。 (11)final和abstract这两个关键字是反相关的,final类就不可能是abstract的。 (12)final方法在编译阶段绑定,称为静态绑定(static binding)。 (13)没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。 (14)将类、方法、变量声明为final能够提高性能,这样JVM就有机会进行估计,然后优化。 (15)按照Java代码惯例,final变量就是常量,而且通常常量名要大写。
instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
以下实例创建了 displayObjectClass() 方法来演示 Java instanceof 关键字用法:
import java.util.ArrayList; import java.util.Vector; public class Main { public static void main(String[] args) { Object testObject = new ArrayList(); displayObjectClass(testObject); } public static void displayObjectClass(Object o) { if (o instanceof Vector) System.out.println("对象是 java.util.Vector 类的实例"); else if (o instanceof ArrayList) System.out.println("对象是 java.util.ArrayList 类的实例"); else System.out.println("对象是 " + o.getClass() + " 类的实例"); } }