代码讲解:
class Code{
{
System.out.println("Code的构造块");
}
static{
System.out.println("Code的静态代码块");
}
public Code(){
System.out.println("Code的构造方法");
}
}
public class StaticCodeDemo{
{
System.out.println("CodeBlock03的构造块"); //构造代码块
}
static{
System.out.println("CodeBlock03的静态代码块"); //静态代码块
}
public StaticCodeDemo(){
System.out.println("CodeBlock03的构造方法"); //类的构造方法
}
public static void main(String[] args){
System.out.println("CodeBlock03的主方法");//普通代码块
new Code();
new Code();
new StaticCodeDemo();
new StaticCodeDemo();
}
}
结果:
CodeBlock03的静态代码块
CodeBlock03的主方法
Code的静态代码块
Code的构造块
Code的构造方法
Code的构造块
Code的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
第二个案列附上内存图:
结果:
Fu static code....
Zi static code.....
Fu constructor code.....
Fu中的无参数构造方法运行
Zi constructor code.....
Zi的无参数构造方法运行...
注意:1、总结: static 代码块随着类的加载,只加载一次。作用是初始化类。
2、构造代码块,可以给所有对象进行初始化的。创建几个对象就调用几次,是给对象进行通用性的初始化。
参考博客:https://blog.csdn.net/TChenjx/article/details/53898682