final关键字

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 13:22   27   0
  • final:

可以修饰类:则该类不能被继承,属性默认也是 final 的

可以修饰方法:则该方法不能被重写(网上认为 final 比非 final 快,就是认为它是在编译的时候已经静态绑定了,不需要在运行时再动态绑定。这个可能以前的JVM上是正确的,但在现代的JVM上,这个可以认为没什么影响)

可以修饰属性:则该类的属性不会进行隐式的初始化(只初始化一次,但可多次读取) ,也就是必须赋值final int a=1,正确;fianl int a;错误。

       或者在构造方法中赋值

       以上两种方式选择一种

可以修饰变量:则只可以赋值一次,那么就是常量了

  • final和非final的性能:

对于是否有 final 修饰的方法,对性能的影响可以忽略不计。因为它们生成的字节码除了 flags 标志位是否有 final 修饰不同之外,其他所有的JVM指令,都是一样的(对于方法本身,以及调用者本身的字节码都一样)。对于JVM来说,它执行的就是字节码,如果字节码都一样的话,那对于JVM来说,它就是同一样东西的了。使用 final ,更多的应该是根据Java对 final 的语义来定义,而不是只想着为了提升性能(而且这影响可以忽略不计)而刻意用 final.

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP