静态初始化块:当类第一次加载时执行。
10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有北戴河免费网站建设让你可以放心的选择与我们合作。
非静态初始化块:非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被执行。
区别如下:
1、执行次数不同
静态块只执行一次,初始化块可以执行多次。
2、作用不同
静态初始化块仅能初始化类变量,即static修饰的数据成员。
非静态初始化块可以初始化类的实例变量。
扩展资料:
使用Java静态代码块注意事项:
1、它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
2、静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
4、一个类中可以有多个静态代码块。
5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)(变量、初始化块)构造器。
static{...}是静态块,而只有{...}的是叫做构造块。
静态块在一个程序里面只执行一次;
而构造块是,只要建立一个对象,构造代码块都会执行一次。
静态块优先于主方法的执行,静态块优先于构造快,然后是构造方法的执行,而且只执行一次!
所以输出结果是:
static
block
instance1
block
instance2
//构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。\x0d\x0a\x0d\x0apublic class CodeBlock02\x0d\x0a{\x0d\x0a\x0d\x0a {\x0d\x0a\x0d\x0a System.out.println("第一代码块");\x0d\x0a \x0d\x0a }\x0d\x0a\x0d\x0apublic CodeBlock02(){\x0d\x0a System.out.println("构造方法");\x0d\x0a }\x0d\x0a \x0d\x0a {\x0d\x0a\x0d\x0a System.out.println("第二构造块");\x0d\x0a }\x0d\x0a public static void main(String[] args){\x0d\x0a new CodeBlock02();\x0d\x0a new CodeBlock02();\x0d\x0a new CodeBlock02();\x0d\x0a \x0d\x0a }\x0d\x0a} \x0d\x0a\x0d\x0a/**\x0d\x0a执行结果:\x0d\x0a第一代码块\x0d\x0a第二构造块\x0d\x0a构造方法\x0d\x0a第一代码块\x0d\x0a第二构造块\x0d\x0a构造方法\x0d\x0a第一代码块\x0d\x0a第二构造块\x0d\x0a构造方法*/
java中有四种代码块
1.普通代码块:直接在{}中出现的。
2.构造代码块:在构造函数的{}中出现的。
3.静态代码块:static{}中出现的。
4.同步代码块:多线程中出现。