Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
transient
- transient关键字只能修饰变量,不能修饰类或变量。
- transient修饰的变量,不能被序列化。
- 一个静态变量,不管是否被transient修饰,均不能被序列化。
- transient只作用于实现Serializable接口的类的常量。
- Externalizable是手动序列化的,Serializable是自动序列化的。
instanceof
- instanceof是Java的二元运算符。
- “111” instanceof String.class。instanceof左边是对象,右边是类。当左边的对象是右边的类或者子类创建的,返回true,否则返回false。
- instanceof左边的对象要和右边的类是同种关系或者存在继承关系,否则编译会报错。
volatile
volatile的用法
- volatile是Java并发中比较重的一个关键字,是一个变量修饰符,只可以修饰变量,不可以修饰方法或代码块。
- 当一个变量可以被多个线程访问的时候,可以用volatile修饰。
实现原理
- https://www.hollischuang.com/archives/2648
synchronized
- synchronized是Java提供的一个并发控制的关键字。主要由两种用法,同步方法和同步代码块。也就是说,synchroized既可以修饰方法,也可以修饰代码块。
- 被synchroized修饰的方法或代码块,在同一时间,只能被一个线程执行。
- https://www.hollischuang.com/archives/2637
final
- final关键字可以用来修饰类,变量和方法。
- 修饰类:
- 这个类不允许被继承。
- 所有的方法,都是隐式的指定为final。
- 变量可以根据需要手动指定为final。
- 修饰变量:
- 如果修饰的是基本类型,数值一旦初始化之后,就不允许再被修改。
- 如果修饰的是对象,对象初始化之后,则不能在指向另外一个对象。但是该对象的属性值是可以被修改的。
- 修饰方法:
- 子类继承后,不允许重写该方法。
- 类的private方法会隐式地被指定为final方法。
static
- static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。
- static可以用来修饰方法,变量,代码块。
- static方法
- static方法一般称为静态方法。静态方法可以不依赖任何对象就可以运行。在静态方法中,不能引用非静态方法和非静态变量。但是在非静态方法中,可以引用静态方法和静态变量。
- 如果不想在创建对象的情况下引用该方法,可以将该方法设置为静态方法。
- static变量
- static变量一般称为静态变量。
- 静态变量在内存中只有一份,是所有对象所共享的。在初始化的时候被创建。
- 非静态变量是每个对象独自所拥有的。在创建的时候,存在多个副本,且互不影响。
- static代码块
- static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。
- static块可以置于类中的任何地方,类中可以有多个static块。
- 在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
预留关键字
- const
- goto