您的位置:首页 > 编程语言

static{}静态代码块与{}普通代码块之间的区别

2018-03-19 21:17 232 查看
转载自:http://blog.csdn.net/aledavvv/article/details/16920743
static{}(静态代码块)与{}(非静态代码块)的异同点相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,    一般在代码块中对一些static变量进行赋值。不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。例:
//普通类
publicclass PuTong {
    public PuTong(){
        System.out.print("默认构造方法!-->");
    }
    
    //非静态代码块
    {
        System.out.print("非静态代码块!-->");
    }
    
    //静态代码块
    static{
        System.out.print("静态代码块!-->");
    }
    
    publicstaticvoid test(){
        {
            System.out.println("普通方法中的代码块!");
        }
    }
}

//测试类
publicclass TestClass {
    
    /**
     * 区别两次new静态与非静态代码块执行情况
     */
    publicstaticvoid main(String[] args) {
        PuTong c1 = new PuTong();
        c1.test();
        
        PuTong c2 = new PuTong();
        c2.test();
    }
}

/*
运行输出结果是:
静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块!
非静态代码块!-->默认构造方法!-->普通方法中的代码块!
*/
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.

两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 作用:静态代码块可用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐