Java基础:关键字 final

final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。如果打算在构造器、初始化块中对final类型的成员变量进行初始化,则不要在初始化之前访问成员变量的值,否则会引发程序报错。

1.修饰变量  

凡是对成员变量或者局部变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。

final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象
当final修饰基本数据类型变量时不赋予初始值以及引用变量指向其他对象时就会报错
当final修饰基本数据类型变量被改变时,就会报错

2.修饰方法

final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

3.修饰类

使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

特征:凡是引用final关键字的地方皆不可修改!

(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)


final也存在局部变量的情况
系统不会对局部变量进行初始化,局部变量必须由程序员显式的进行初始化,因此使用final修饰局部变量的时候,既可以在定义是设定默认值,也可以不指定默认值。如果在定义是没有进行设定默认值,则可以在后面的代码中对该final变量赋初值,但只能一次,不可以重复赋值。当然如果在定义变量的时候就已经指定默认值,在后面的代码中就没有必要也不允许对该变量在进行赋值操作。


final修饰基本类型变量和引用类型的变量的区别
final修饰基本类型变量上面已经讲述的很清楚了,那引用类型的变量会有什么不同呢?对于引用类型的变量而言,它仅仅是保存了一个引用关系,final只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。
 

猜你喜欢

转载自blog.csdn.net/PrisonJoker/article/details/105212045