Java关键字

    科技2024-03-20  91

    java 关键字

    一、总表:java关键字共53个(其中包含两个保留字const,goto)二、含义三、详细介绍1、关键字abstract2.关键字assert(断言)3.关键字break&Continue4.关键字 可控制访问权限的四个关键字private,default,protected,public5.关键字final01、final常量02、final方法03、final类04、总结 6.关键字instanceof Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。 Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等, 关键字不能用作变量名、方法名、类名、包名和参数。

    一、总表:java关键字共53个(其中包含两个保留字const,goto)

    参考链接: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 用在循环结构中

    三、详细介绍

    1、关键字abstract

    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类不能有子类。

    2.关键字assert(断言)

    断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说, 断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试时开启。为了保证程序 的执行效率,在软件发布后断言检查通常是关闭的。

    断言是一个包含布尔表达式的语句,在执 行这个语句时假定该表达式为 true;如果表达式的值为 false,那么系统会报告一个 AssertionError。 断言的使用如下面的代码所示:

    assert(a > 0); // throws an AssertionError if a <= 0

    断言可以有两种形式:

    assert Expression1; assert Expression1 : Expression2 ;
    3.关键字break&Continue

    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=4

    continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中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=9
    4.关键字 可控制访问权限的四个关键字private,default,protected,public

    java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。 注意:1)对于class的权限修饰只可以用public和default。 2)类的成员(包括内部类)的修饰符可以是以上四种。 3)类的成员不写访问修饰时默认为 default,默认对于同一个包中的其他类相当于公开 (public),对于不是同一个包中的其他类相当于私有(private)。 4)受保护(protected)对子类 相当于公开,对不是同一包中的没有父子关系的类相当于私有。

    5.关键字final
    01、final常量

    final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。例如,在类中定义PI值,可以使用如下语句:

    final double PI=3.14;

    全局常量: 我们知道一个被定义为final的对象引用只能指向唯一一个对象,不可以将它再指向其它对象,但是一个对象的值却是可以改变的,那么为了使一个常量真正做到不可更改,可以将常量声明为static final。

    02、final方法

    final的方法不能被重写 将方法定义为final类型可以防止任何子类修改该类的定义与实现方式,同时定义为final的方法执行效率要高于非final方法。在修饰权限中曾经提到过private修饰符,如果一个父类的某个方法被设置为private修饰符,子类将无法访问该方法,自然无法覆盖该方法,所以一个定义为private的方法隐式被指定为final类型,这样无须将一个定义为private的方法再定义为final类型。

    private final void test() {}
    03、final类

    定义为final的类不能被继承

    如果希望一个类不允许任何类继承,并且不允许其他人对这个类有任何改动,可以将这个类设置为final形式。

    final类的语法如下:final 类名{}

    如果将某个类设置为final形式,则类中的所有方法都被隐式设置为final形式,但是final类中的成员变量可以被定义为final或非final形式。

    04、总结

    使用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变量就是常量,而且通常常量名要大写。

    6.关键字instanceof

    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() + " 类的实例"); } }
    Processed: 0.015, SQL: 8