Java中的final关键字
来源:互联网 发布:淘宝断码地带是正品吗 编辑:程序博客网 时间:2024/06/05 23:39
定义final的作用:
2.能够带来更高的效率。将方法标记为final可以让编译器将所有final方法的调用转变为内联调用,当编译器看到final 方法调用时,根据自己判断略去通过方法调用机制插入代码的步骤,调用机制包括将方法参数压栈,清除参数和最后处理返 回值。
与这套方法不同,编译器可以在方法体中使用实际的代码替换方法调用。如果方法过大,在方法调用和方法返回方面的时 间节省将会变得很小,这取决与方法内部花去的时间总量。
一般来说,短小的方法能够从内联中获益。内联的好处不局限于方法的大小,还会带来进一步的优化,如减少无用的代码 和更多的内联。
注:
由于private和static方法不能在子类中被重写,因此他们总是隐式的final
Java不允许显式地标记方法为内联方法,编译器会根据自己的判断,在代码中将方法标记为final。
这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切 值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时 确定。
1. final类不能被继承,没有子类,final类中的方法默认是final的。
2. final方法不能被子类的方法覆盖,但可以被继承。
3.final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final的好处:
1.final方法可以告诉编译器对于final方法的调用不需要动态的绑定,这会让代码变得略微更有效一点,静态方法的绑定 总是比动态方法的绑定更加高效,因为在动态方法的绑定中,运行时需要解析方法的调用2.能够带来更高的效率。将方法标记为final可以让编译器将所有final方法的调用转变为内联调用,当编译器看到final 方法调用时,根据自己判断略去通过方法调用机制插入代码的步骤,调用机制包括将方法参数压栈,清除参数和最后处理返 回值。
与这套方法不同,编译器可以在方法体中使用实际的代码替换方法调用。如果方法过大,在方法调用和方法返回方面的时 间节省将会变得很小,这取决与方法内部花去的时间总量。
一般来说,短小的方法能够从内联中获益。内联的好处不局限于方法的大小,还会带来进一步的优化,如减少无用的代码 和更多的内联。
注:
由于private和static方法不能在子类中被重写,因此他们总是隐式的final
Java不允许显式地标记方法为内联方法,编译器会根据自己的判断,在代码中将方法标记为final。
final关键字要点:
public class Student(){public final int ID;public Student(){ID=createID();}public int createID(){return .. //generate new ID}}
1.空缺final变量是一种声明为final但未初始化的变量,空缺final必须在构造函数中初始化,空缺final变量只在对象生命周 期中调用一次.
2.空缺final如果在某个构造函数中初始化, 就必须在类的所有重载构造函数中进行初始化,final变量不能指向除初始化时 设置的对象之外的任何对象,如果final变量保存指向对象的引用,那么引用必须保持不变,而非对象。可以通过调用赋值方 法来改变对象的状态
public class MyClass {public static void main(String[] args) {// TODO Auto-generated method stubString a = "hello2"; final String b = "hello";String d = "hello";String c = b + 2; String e = d + 2;System.out.println((a == c));System.out.println((a == e));}public static String getHello() {return "hello2";}}
这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切 值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时 确定。
阅读全文
0 0
- Java中的final关键字
- JAVA中的关键字FINAL
- java中的final关键字
- java中的final关键字
- java中的final关键字
- JAVA中的final关键字
- java中的final关键字
- JAVA中的final关键字
- Java中的final关键字
- Java 中的关键字 final
- Java中的final关键字
- Java中的final关键字
- Java中的final关键字
- Java中的final关键字
- java 中的final关键字
- JAVA中的final关键字
- JAVA中的final关键字
- Java中的关键字final
- 微服务体系下如何快速构建一个服务
- connect four / tic-tak-toe
- 055 不定积分概念与性质
- Xcode9学习笔记1
- samohyes的心情随笔(3)
- Java中的final关键字
- pads layout 9.5笔记2-多层板设计要点
- 【BZOJ2118】墨墨的等式(dijkstra)
- bzoj 1005: [HNOI2008]明明的烦恼
- 【BZOJ2287】【POJChallenge】消失之物(权限题)
- 读Zepto源码之fx_methods模块
- BZOJ1051 [HAOI2006]受欢迎的牛
- 【51nod1531】树上的博弈
- Xcode9学习笔记2