`
bruce.ko
  • 浏览: 33954 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Final方法节省时间开销

阅读更多
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);    
            
    }    
        
}
分享到:
评论

相关推荐

    系统性能和Final的测试报告

    - **编译优化**:当方法被标记为`final`时,JVM可能对其进行内联优化,即直接将方法体复制到调用位置,避免了函数调用的开销,从而提升了执行效率。 - **性能考量**:虽然添加`final`关键字能够带来一定的性能提升...

    Android使用注解代替枚举节省系统内存开销的方法

    在Android开发中,为了优化应用程序性能,特别是考虑到内存开销,开发者经常需要寻找更高效的数据表示方式。本文将探讨如何使用注解(Annotation)来替代枚举(Enumeration),以达到节省系统内存的目的。 首先,...

    java开发性能优化

    4. **利用final修饰符**:final关键字可以提高性能,因为编译器可能会对final方法进行内联,减少方法调用的开销。此外,final类和方法不能被覆盖,有助于保持代码稳定。 5. **优先使用局部变量**:局部变量在栈中...

    Java中的五种实现方法【单例模式】

    单例模式能够帮助我们节省资源,提高程序效率。以下将详细介绍Java中实现单例模式的五种方法。 1. 饿汉式(静态常量) 这是最简单的单例实现方式,它在类加载时就完成了初始化,所以是线程安全的。饿汉式的优点是...

    提高Java程序性能

    9. **避免依赖finalize方法**:finalize方法用于资源清理,但其执行时间不确定,可能导致资源长时间未释放。通常推荐使用try-with-resources语句或显式关闭资源的方法。 10. **使用基本数据类型代替对象**:直接...

    JAVA编程的一些优化技巧,好规范

    4. **使用final修饰符**:final方法可以被JVM内联,提高性能。同时,final类和final变量也能提供更好的封装和安全性。 5. **优先使用局部变量**:局部变量存储在栈中,访问速度快。尽量减少实例变量和静态变量的...

    Java中性能优化的35种方法汇总.doc

    1. **使用`final`修饰符**:通过标记类或方法为`final`,可以避免不必要的继承或重写,同时,Java编译器可能会对`final`方法进行内联优化,提高执行速度。 2. **对象重用**:尽量避免频繁创建对象,尤其是`String`...

    java提高性能.pdf

    1. **单例模式的应用**:单例模式可以限制类的实例化,减少内存开销,适用于控制资源访问、节省实例创建成本以及实现跨线程的数据共享。然而,过度使用或在不必要的情况下使用单例可能会导致设计复杂性和测试困难。 ...

    Java编程中影响性能的细节

    4. **利用final修饰符**:final类和方法能提升性能,因为编译器可能会进行方法内联。例如,`String`类被声明为final,提高了其长度查询等操作的速度。 5. **使用局部变量**:局部变量存储在栈中,访问速度快。相比...

    java中提升性能对代码作的建议

    9. **避免依赖finalize方法**:finalize方法的执行时间不确定,不应依赖其进行资源清理。使用try-finally或try-with-resources语句来确保资源释放。 10. **直接使用常量字符串**:如`String str = "hello";`而不是`...

    浅谈Java程序的性能优化

    如果对象实现了Cloneable接口,可考虑使用clone()方法,它不会调用构造函数,从而节省开销。对于数组,也可以通过复制已有数组来避免频繁的新建。 2. **谨慎处理异常**:异常处理虽然方便,但异常对象的创建和堆栈...

    2022年Java性能优化技巧集锦Java教程.docx

    声明类或方法为`final`可以提供优化的机会。`final`类不能被继承,其方法可以被编译器内联,从而提高执行速度。内联可以减少方法调用的开销。 6. **优先使用局部变量** 局部变量存储在栈中,访问速度较快。避免...

    ccna 4.0 第三学期最新fianl 百分卷

    【CCNA 4.0 Final 百分卷】是一份针对Cisco Certified Network Associate(CCNA)4.0课程第三学期的考试题目集,主要涵盖网络基础、路由与交换技术等核心知识点。 1. **VLAN通信**:在图示问题中,让交换机X上的...

    Android开发高级进阶开发商业级Android应用程序的注意....pdf

    9. 使用Final常量:使用static final修饰符来定义常量可以减少运行时的性能开销,因为这些常量在编译时就已经确定,可以直接插入到类文件的静态属性初始化中,由虚拟机直接处理。 10. 避免使用浮点类型:嵌入式...

    Android代码优化技巧汇总

    即使有JIT,两者效率也相近,但直接使用实现类依然可以减少方法调用的开销。 4. **避免内部getter/setter方法**:在Android中,直接字段访问比虚方法调用(如通过getter和setter访问)更高效。在性能敏感的代码中,...

    java代码静态检测规则

    如果一个`final`字段被赋值为编译时常量,那么可以将其声明为`static`,从而节省运行时每个对象的开销。 #### 原因: 1. **内存优化**:将不变的`final`字段声明为`static`可以显著减少内存消耗。 2. **代码简化**...

    java提高性能[汇编].pdf

    4. **使用final修饰符**:final方法可以被编译器内联,提高性能。final类和方法禁止继承和覆盖,有助于保持代码的稳定性和安全性。 5. **优先使用局部变量**:局部变量存储在栈中,访问速度快。尽量减少静态变量和...

    java相关笔试题大总结

    - **`sleep()` 方法**:该方法让当前线程暂停执行指定的毫秒数,期间线程会释放 CPU 时间片但不释放锁,因此其他线程可以继续执行同一对象上的其他方法。 - **`wait()` 方法**:该方法使当前线程释放对象的锁并进入...

    IEEE_802.11n_Oct_2009_Final_Version.p

    - 电源节省多点轮询(PSMP)操作:一种节能机制,使得无线设备在不需要保持监听状态时能够进入省电模式。 - 反向方向(RD):一种通信方式,让无线设备能够主动地在接收数据的同时发送数据。 - 保护机制:包括RTS/CTS...

    百度2019年最新面试题库

    这种方法可以减少初始加载时间,节省内存资源。 #### 什么是尾递归,为什么需要尾递归 - **尾递归**:指递归函数的最后一步是调用自身的情况。 - **原因**:尾递归可以优化为循环,避免了深度递归造成的栈溢出风险...

Global site tag (gtag.js) - Google Analytics