在ImportNew中看到一篇介绍java中final关键字的文章,跟着学习了一下,特此抄录以备复习,欢迎大家阅读并指出我的理解不到位及错误之处,感谢!!!
特奉上原文,请点击
新司机开车了,擦亮眼睛。
- Java中的final关键字非常重要,它可以应用于类,方法和变量;
- 什么是final?
- final是java中的一个关键字,可以修饰变量(成员变量+局部变量)、类以及方法。final与abstract关键字是反相关的,不能同时出现。
- 被final修饰的变量,方法和类代表了什么?
- 被final修饰的变量(成员变量+局部变量)叫做final变量,final变量不能再次改变其引用。final经常与static一起声明常量。
- 被final修饰的方法称为final方法,不能被子类重写。如果你认为一个方法的功能已经足够完善了,子类中无需改变的话你可以使用final修饰此方法。final方法要比普通的方法要快,因为在编译时已经静态绑定了,不需要再运行时动态绑定。
- 被final修饰的类称为final类。final类通常是完整的,不能被继承。java中有很多类是final类,比如String,Integer及其它包装类。final类的对象一旦被创建就不能被更改了。String类是典型的不可变类的代表。其有很多好处,譬如对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。
- 被final修饰的好处?
- final可以修饰变量(成员变量+局部变量)、方法和类;
- final变量不能再次赋值;
- final成员变量必须在声明时赋值或者在构造器中初始化,否则编译通不过;
- final局部变量必须在声明时赋值;
- 匿名类中使用的局部变量必须是final声明;
- final方法不能被重写;
- final类不能被继承;
- final关键字与finally无关,finally是用于异常处理;
- final关键字与finalize()方法区别,finalize()方法是在Object中定义的方法,是在垃圾回收之前被JVM调用的方法;
- interface中声明的变量本身都是final的;
- 将类,方法和变量声明为final变量能够提高性能,这样JVM就有机会进行估计然后优化;
- 按照java代码编程习惯,final变量就是常量,常量名要大写;
- 对于集合类对象声明为final,指的是集合变量的引用不能被修改,但是你得增删改查不受final的影响。
- final与abstract是反相关的,final类不能是abstract的;
- final方法在编译阶段进行绑定,成为静态绑定(static binding)。