Java中一些特殊关键字

transient

被transient修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。

instanceof

它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。

const

const是Java预留关键字,用于后期扩展用,用法跟final相似,不常用

static

  • 静态变量: 用static表示变量的级别,一个类中的静态变量,不属于类的对象或者实例,静态变量与所有的对象实例共享,因此他们不具线程安全性。
  • 静态方法:与静态变量一样,静态方法是属于类而不是实例。一个静态方法只能使用静态变量和调用静态方法。通常静态方法通常用于想给其他的类使用而不需要创建实例。
  • 静态代码块:Java的静态块是一组指令在类装载的时候在内存中由Java ClassLoader执行。静态块常用于初始化类的静态变量。大多时候还用于在类装载时候创建静态资源。Java不允许在静态块中使用非静态变量。一个类中可以有多个静态块,尽管这似乎没有什么用。静态块只在类装载入内存时,执行一次。

final

  • final变量:如果将变量设置为final,则不能更改final变量的值(它将是常量)。
  • final方法:如果任何方法声明为final,则不能覆盖它。
  • final类:如果把任何一个类声明为final,则不能继承它。

synchronized

synchronized是Java提供的一个并发控制的关键字。主要有两种用法,分别是同步方法和同步代码块。被synchronized修饰的代码块及方法,在同一时间,只能被单个线程访问。synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对象加锁。synchronized可以保证原子性、有序性和可见性。

volatile

volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。volatile只能保证有序性和可见性。在以下两个场景中可以使用volatile来代替synchronized

1、运算结果并不依赖变量的当前值,或者能够确保只有单一的线程会修改变量的值。

2、变量不需要与其他状态变量共同参与不变约束。

猜你喜欢

转载自www.cnblogs.com/yysy/p/13382694.html