高阶java_Java高阶语法---final

背景:听说final Java高阶语法是挺进BAT必经之路。

final:

final关键字顾名思义就是最终不可改变的。

1、含义:final可以声明成员变量、方法、类和本地变量;一旦将引用声明为final,此引用将不再被改变,编译器会检查代码,如果试图将此变量再次初始化则编译器会报告编译错误。

2、方法:方法前使用final修饰则代表该方法不可被子类的方法重写(private类型的方法默认是final类型的);如果认为一个方法的功能已经很perfect了,子类中不需要再做改变,大可声明此方法为final类型的,因为final方法比非final类型的方法执行速度要快,前者在编译的时候已经静态绑定了,无需在运行时再动态绑定。

3、类:使用final修饰的类通常功能是perfect的,其不能被继承。(Java中的final类,如:Integer、String、Boolean以及其他包装类)这种不可改变类有很多好处,如:它们的对象是只读的,可以在多线程环境下安全共享,不用额外的同步开销等。

4、优势:final关键字可提高性能,JVM和Java应用都会缓存final变量;final变量可以安全地在多线程环境下无需额外同步开销实现共享;高效,使用final关键字JVM会对方法、变量及类进行优化,编译器在遇到调用final方法时会转入内嵌机制,大幅度提高了方法执行效率。

我撸了个小例子测试,同样的代码final类型的方法执行用368ms,非final类型的方法用了384ms,有图有据。

80b95e814f9202a6ccd463469bb12757.png

FYI:

1 importlombok.extern.slf4j.Slf4j;2

3 @Slf4j4 public classTestFinal {5 public static voidmain(String[] args) {6 TestFinal.commomMethod();7 TestFinal.finalMethod();8 }9 public static voidcommomMethod() {10 long startTime =System.currentTimeMillis();11 int number = 100000000;12 long amount = 0l;13 for (int i = 0; i < number; i++) {14 amount = amount +i;15 }16 log.info("commomMethod's amount is: "+amount);17 long endTime =System.currentTimeMillis();18 log.info("commomMethod's amount spend time is: "+(endTime-startTime)+"ms");19 }20 public final static voidfinalMethod() {21 long startTime =System.currentTimeMillis();22 int number = 100000000;23 long amount = 0l;24 for (int i = 0; i < number; i++) {25 amount = amount +i;26 }27 log.info("finalMethod's amount is: "+amount);28 long endTime =System.currentTimeMillis();29 log.info("finalMethod‘s amount spend time is: "+(endTime-startTime)+"ms");30 }31 }

执行结果:

- commomMethod's amount is: 4999999950000000

- commomMethod's amount spend time is: 384ms

- finalMethod's amount is: 4999999950000000

- finalMethod‘s amount spend time is: 368ms

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值