本文主要是介绍static{}(静态代码块)与{}(非静态代码块)的异同点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:http://hi.baidu.com/dongaxis/item/9a8edc7057b8863771442303
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
例:
//普通类
public classPuTong {
publicPuTong(){
System.out.print("默认构造方法!-->");
}
//非静态代码块
{
System.out.print("非静态代码块!-->");
}
//静态代码块
static{
System.out.print("静态代码块!-->");
}
public static voidtest(){
{
System.out.println("普通方法中的代码块!");
}
}
}
//测试类
public classTestClass {
/**
* 区别两次new静态与非静态代码块执行情况
*/
public static voidmain(String[] args) {
PuTong c1 = newPuTong();
c1.test();
PuTong c2 = newPuTong();
c2.test();
}
}
/*
运行输出结果是:
静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块!
非静态代码块!-->默认构造方法!-->普通方法中的代码块!
更多请参考:http://blog.csdn.net/zhanghaipeng1989/article/details/8943509
*/
这篇关于static{}(静态代码块)与{}(非静态代码块)的异同点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!