final

final修饰类变量:

  必须在静态初始化块或者声明该类变量时指定初始值,并且且必须在这两个方式中选一个。

final修饰实例变量:

  必须在非静态初始化块或者声明该实例变量时指定初始值,并且且必须在这两个方式中选一个。

final修饰局部变量:

  系统不会对局部变量进行初始化,局部变量必须显式初始化,所以final修饰局部变量时,既可以指定初始值,也可以不指定。不指定则可以在后面代码中对其赋值,只能一次,不能重复。

final修饰基本类型变量:

  不能对基本类型变量重新赋值,不可变。

final修饰引用类型变量:

  保证了引用类型变量保存的地址不变,即一直引用同一个对象,但这个对象可以改变。

final修饰变量成为宏变量:

  声明变量时指定初始值为直接量,被赋值的表达式只是基本的算术运算或者字符串连接运算,没有访问普通变量,则直接当成宏变量,即变量不存在,直接使用赋值的内容。

final修饰方法:

  final修饰的方法不可被重写。Object类里的getClass()方法就用了final修饰。

final修饰类:

  final修饰的类不可以有子类。java.lang.Math就是final类。

总结:

  final的变量的值不能被改变。(包括形参)

  final的方法不能被重写。

  final的类不能被继承。

原文地址:https://www.cnblogs.com/zawjdbb/p/6901254.html