本文主要是介绍Final方法节省时间开销,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[size=medium][color=indigo]1、final类:可以用“final”声明一个类不可再被作为超类。
2、final方法:
当一个方法用“final”来修饰时,表示该方法不可以被子类重写。
好处:
一、限制了子类中对其改写;
二、提高了执行的效率,因为这种情况属于静态绑定,Java虚拟机(JVM)的即时编译器就不会去检索该方法在其父类、子类或爷爷类、孙子类等有内联关系的类中是否存在重写,省去了动态判断究竟要执行哪一个类(具体内联关系的类)的这个名称的方法。
3、final属性:
对于成员变量和变量,也可以用“final”来修饰,表示是一个不可被修改的常量。
注意:一个方法如果需要被构造函数所调用,那么方法最好声明为“final”;否则,如果子类重写了这个方法,就可能引起意外的风险,应避免多态性的发生。
/**
* 对被final关键字修饰的方法执行效率测试类
* @author CodingMouse
* @version 1.0.0.1 2009-5-5
*/
public class FinalTest {
/**
* 循环次数(这里用一千万来测试)
*/
private final static int NUM = 10000000;
/**
* 测试方法一
*/
public static void Method1() {
int[] arr = new int[10000000];
for (int i = 0; i < NUM; i++) {
arr[i] = i;
}
}
/**
* 测试方法二
*/
public final static void Method2() {
int[] arr = new int[10000000];
for (int i = 0; i < NUM; i++) {
arr[i] = i;
}
}
/**
* 测试程序入口方法
* @param args 入口参数列表
*/
public static void main(String[] args) {
long start, now;
start = System.currentTimeMillis();
Method1();
now = System.currentTimeMillis() - start;
System.err.println("调用不带final关键字的Method1方法耗时(ms毫秒):" + now);
System.out.println("---------------------------------------------------");
start = System.currentTimeMillis();
Method1();
now = System.currentTimeMillis() - start;
System.err.println("调用带final关键字的Method2方法耗时(ms毫秒):" + now);
}
}[/color][/size]
这篇关于Final方法节省时间开销的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!