JAVA中的代码块、静态代码块、构造方法、main方法执行顺序

转载:https://blog.csdn.net/lzxomg/article/details/51858664

java中静态代码块,普通代码块,构造代码块区别及代码示例

执行顺序:(优先级从高到低)静态代码块>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=5;  
                System.out.println("2,普通代码块内的变量y="+y);      
            }  
        }  
    }  
          
    /* 
    运行结果: 
        1,普通代码块内的变量x=3 
        主方法内的变量x=1 
        2,普通代码块内的变量y=5 
    */  
2 构造代码块

构造代码块:直接在类中定义且没有static修饰没有名字的{}代码块称为构造代码块。

构造代码块在每次创建对象时都会被调用,并且构造代码块的执行次序优先于类构造函数。

    public class CodeBlock02  
    {  
        {  
          System.out.println("第一代码块");      
        }  
          
        public CodeBlock02()  
        {  
          System.out.println("构造方法");  
        }  
              
        {  
          System.out.println("第二构造块");  
        }  
        public static void main(String[] args)  
        {  
          new CodeBlock02();  
          new CodeBlock02();  
             
        }  
    }      
      
    /* 
    执行结果: 
        第一代码块 
        第二构造块 
        构造方法 
        第一代码块 
        第二构造块 
        构造方法 
    */  

3 静态代码块

有static修饰的代码块。

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的main方法");  
        new Code();  
        new CodeBlock03();  
    }  
}  
/* 运行结果: 
CodeBlock03的静态代码块 
CodeBlock03的main方法 
Code的静态代码块 
Code的构造块 
Code的构造方法 
CodeBlock03的构造块 
CodeBlock03的构造方法*/

猜你喜欢

转载自blog.csdn.net/jamie_byr/article/details/80001788