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
    收藏
    关注
    评论
  • 相关阅读:
    [STL][C++]MAP
    [原创]南水之源A*(A-Star)算法
    php+mysql模糊查询功能
    php中如何传递Session ID
    初识jsonp
    跨站脚本攻击XSS
    XSS危害——session劫持
    PHP中获取当前页面的完整URL
    smarty获得当前url的方法分享
    表空间的管理方式有哪几种,各有什么优劣?
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/15532604.html
Copyright © 2011-2022 走看看