三种被final修饰的场景:
Java中final关键字的使用很频繁,它可以修饰变量、方法跟类。“final”的英文意思是最终的、不可更改的意思,因此被final修饰的变量、方法或类是不能被更改的。
final一般会跟static关键字结合使用。下面分别解析被final修饰的变量、方法和类:
一、final变量
定义:被final修饰的变量就是final变量,final变量经常和static关键字一起使用,作为常量。
特点:final变量被赋值后不能被更改,否则会出现编译错误。
补充:final变量名一般都大写,比如final int COUNT。
示例:
public static final int COUNT = 100;
public static final String TEST = "HAYDEN";
非静态的final变量也可以在类的构造方法中为其赋值。
public class Test {
public final int COUNT;
public Test(int COUNT){
this.COUNT = COUNT;
}
}
二、final方法
定义:被final修饰的方法就是final方法。
特点:final方法不能被重写。(一般情况下,当一个方法是很完整的,不需要被重写或者你不希望被被别人重写,可以将方法声明为final),final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
示例:
public final String finalTest(){
return "This is a final method!";
}
三、final类
定义:被final修饰的类就是final类。
特点:final类不能被继承。java自带很多final类,比如包装类String、Interger等。一般final类功能都十分完整,不需要子类来进行扩充。
示例:
public final class FinalClassTest {
}
使用final关键字修饰的好处:
1.final关键字提高了性能。JVM和Java应用都会缓存final变量。
2.final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
3.使用final关键字,JVM会对方法、变量及类进行优化。