执行顺序:(优先级从高到低。)静态代码块>main方法>构造代码块>构造方法。
其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。
1 、普通代码块
public class CodeBlock01{
public static void main (String[] args){
{
int x=3 ;
System.out .println("1,普通代码块内的变量x=" +x);
}
int x=1 ;
System.out .println("主方法内的变量x=" +x);
{
int y=7 ;
System.out .println("2,普通代码块内的变量y=" +y);
}
}
}
/*
运行结果:
1,普通代码块内的变量x=3
主方法内的变量x=1
2,普通代码块内的变量y=7
*/
2 、构造代码块
public class CodeBlock02{
{
System.out .println("第一代码块" );
}
public CodeBlock02 (){
System.out .println("构造方法" );
}
{
System.out .println("第二构造块" );
}
public static void main (String[] args){
new CodeBlock02();
new CodeBlock02();
new CodeBlock02();
}
}
/*
执行结果:
第一代码块
第二构造块
构造方法
第一代码块
第二构造块
构造方法
第一代码块
第二构造块
构造方法
*/
3 、静态代码块
class Code{
{
System.out .println("Code的构造块" );
}
static {
System.out .println("Code的静态代码块" );
}
public Code (){
System.out .println("Code的构造方法" );
}
}
public class CodeBlock03{
{
System.out .println("CodeBlock03的构造块" );
}
static {
System.out .println("CodeBlock03的静态代码块" );
}
public CodeBlock03 (){
System.out .println("CodeBlock03的构造方法" );
}
public static void main (String[] args){
System.out .println("CodeBlock03的主方法" );
new Code();
new Code();
new CodeBlock03();
new CodeBlock03();
}
}
/*
CodeBlock03的静态代码块
CodeBlock03的主方法
Code的静态代码块
Code的构造块
Code的构造方法
Code的构造块
Code的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
*/