final关键字

来源:互联网 发布:造价师工程师网络教育 编辑:程序博客网 时间:2024/05/20 11:50

final

大概有三方面的作用:变量,函数名,类。

如果修饰变量名,变量变常量,比如final String str = new String("123");和String str = new String("123");前者分配在常量池中说白了就等于:

String str = “123”;而后者会在堆上声明一个东东亲,然后常量池中仍旧有个副本。这也就是为什么final修饰变量效率会高一些,但是常量一旦被赋值就不能变了,亲~~~。


如果修饰方法,就是父类存心的不想让你改他方法,仅仅让你继承,那么直接声明为final即可。

编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。


如果修饰类的话他就不是个可继承的类了,大部分的工具类一般都被声明为final,防止外部函数的修改其方法。也就是说final类不可能是abstract类。例如String类,这个类作为典型的工具类,防止外部调用修改其内部函数。但是,final类中的方法和函数可以不是final的,可以被外界改变。真是不知道为什么



原创粉丝点击