final关键字与内联函数

来源:互联网 发布:资源数据核查季度巡检 编辑:程序博客网 时间:2024/06/01 12:51
首先,在谈final关键字之前,有必要看说说什么叫内联函数,并且说说内联函数的调用过程,
在函数的调用过程中,程序按顺序往下执行,当执行到调用某个函数表达式时,程序会首先保护现场,记住当前的地址,并且查询函数所在的地址,然后去执行这个函数,当执行完函数时,就会回到当初记忆的地址,并且恢复现场,继续执行当前程序,因此这种方法就会消耗大量空间和时间,当被调用的函数不大,并且频繁调用时,就会消耗大量时间和空间,
那么怎么解决这个问题呢,在我们写c语言时,我们有个办法叫宏,我们可以把一些变量或者逻辑定义到宏里面,方程序编译的时候,会把程序里面调用函数的表达式,全部用函数体来代替,方程序在执行的时候就会大大缩减程序的运行时间,但是此时就会消耗大量的空间。
在java中我们是用final关键字来解决这种方法,final可以修饰方法,属性,类,当一个类被final修饰时,类里面的全部属性方法都是final的,并且子类不能继承该类,不能重新该方法,当java虚拟机在编译时,就会把程序里面所有调用该类或者方法的表达式全部用类或者函数体来代替,这样就会大大减少时间的消耗,但是会增加空间的开销,当函数体很大很大时。此时java虚拟机在编译的时候就会判断是回掉该函数性能高,还是编译就把表达式变成函数体性能高,就会来选择哪种方法
原创粉丝点击