final有最后的意思,在java中用于表示修饰的对象不再发生改变。final关键字可以用于修饰类、方法和变量。
修饰类
当final修饰类的时候,表明这个类不会再被其他类所继承了,其中内部的成员方法都会隐式地被final修饰。
修饰方法
对方法使用final的原因有两个:
- 将类锁定,防止继承类对该方法进行修改。
- 第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
在类中,被private修饰的方法会被隐式地被final修饰。
修饰变量
修饰变量的时候,如果变量是基本数据类型,那么它的值就不会发生改变,如果变量是引用数据类型,那么它指向的对象地址不会发生改变,也就是它只会指向这一个变量。
其他点
1、final变量和普通变量的区别 成员变量一旦被final修饰,就要在定义的地方或者构造器中进行初始化,而且一旦赋值完成就无法再修改了。
final变量和普通变量的区别就在于如果final变量是基本数据类型或者String时,会被编译器当做编译期的常量来使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。
public class fin {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
}
}
//运行结果
true
false
2、和static的区别:static的作用是一个类中该变量只有一份,而final是用来保证对象不可变的。