zoukankan      html  css  js  c++  java
  • Java中的静态块(static{})

    静态块(static{})

    (1) static关键字还有一个比较关键的作用,用来形成静态代码块(static{} 即static块 )以优化程序性能。

    (2) static块可以置于类中的任何地方,类中可以有多个static块。

    (3) 在类初次被加载的时候执行且仅会被执行一次(这是优化性能的原因!!!),会按照static块的顺序来执行每个static块,一般用来初始化静态变量和调用静态方法。

    下面通过两段代码,说明 static{} 为什么能优化程序性能。

    实例

    /**
     * 每次调用isBornBoomer的时候
     * 都会生成startDate和birthDate两个对象,造成了空间浪费
     */
    class Person{
        private Date birthDate;
         
        public Person(Date birthDate) {
            this.birthDate = birthDate;
        }
         
        boolean isBornBoomer() {
            Date startDate = Date.valueOf("1997");
            Date endDate = Date.valueOf("2019");
            return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
        }
    }
    
    /**
     * 这里使用了static块
     * 只需要进行一次的初始化操作
     * 节省内存空间,优化性能
     */
    class Person{
        private Date birthDate;
        private static Date startDate,endDate;
     
        static{
            startDate = Date.valueOf("1997");
            endDate = Date.valueOf("2019");
        }
         
        public Person(Date birthDate) {
            this.birthDate = birthDate;
        }
         
        boolean isBornBoomer() {
            return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
        }
    }
    

    注意:强调一下static块是会按照顺序执行,与main入口函数无关。

    参考

    [1] https://blog.csdn.net/qq_41647999/article/details/87966487

    Top
    收藏
    关注
    评论
  • 相关阅读:
    iOS开发
    Xcode
    UITextField
    iOS
    过场动画
    iOS 网络状态监听和检查,
    线程互动,GCD小应用,(功能实现并代码聚集---加载动画,弹框AlertView定时消失。)
    drawRect: 小注
    FMDB_and_Sqlite3
    UIGestureRecognizer手势。
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/15532604.html
Copyright © 2011-2022 走看看