前言:
小知识点 出自《on java 8》-读后感
前期绑定
将一个方法的调用和主体关联起来称为绑定,若绑定发生在程序运行前,则为前期绑定,此工作交由编译期和链接器完成,例如在 C 语言中就只有前期绑定这一种方法调用。
后期绑定
后期绑定也称为动态绑定或运行时绑定,意味着在程序运行时根据对象的类型进行绑定,在运行时需要判断对象的类型,这种机制称为方法调用机制,java中除了static方法和final方法方法外,其他的都是后期绑定,后期绑定自动发生!
声明为final的方法为什么能带来性能提升?
很多人都知道声明final可以带来程序性能的提升,但原理是什么?
将一个对象声明为final,它可以防止方法被重写,但更重要的一点是,它有效的关闭了后期绑定,这可以让编译期在运行前就为final方法生成更高效的代码,虽然这点性能微乎其微,但是的确有提升
是为设计还是为性能?
final的方法可以避免不被重写 避免了jvm在运行时的一些判断 可以为final方法生成更高效的代码 但是这点性能对于现在的jvm来说是微乎其微的 它的出现是为了设计而不是提高性能(个人理解)