Java高阶语法---final
2019-01-15 07:02:57来源:博客园 阅读 ()
背景:听说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,有图有据。
FYI:
1 import lombok.extern.slf4j.Slf4j; 2 3 @Slf4j 4 public class TestFinal { 5 public static void main(String[] args) { 6 TestFinal.commomMethod(); 7 TestFinal.finalMethod(); 8 } 9 public static void commomMethod() { 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 void finalMethod() { 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
原文链接:https://www.cnblogs.com/taojietaoge/p/10259437.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash