zoukankan      html  css  js  c++  java
  • 代码块以及他们的执行顺序

    1.普通代码块

      在方法或与语句中出现的 {  }就称为普通代码块。

      普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定(先出现,先执行

    public static void main(String[] args) {
            {
                int z=3;
                System.out.println("1,普通代码块内的变量z="+z);    
            }
            
            int x=1;
            System.out.println("主方法内的变量x="+x);
                             
            {
               int y=7;
               System.out.println("2,普通代码块内的变量y="+y);    
             }         
        }

    2.构造代码块

      直接在类中定义且没有加static关键字的代码块称为 {  }构造代码块

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

    public class Test2 {
        
        public Test2(){
            System.out.println("构造方法");
        }
    
        {
            System.out.println("构造代码块");
        }
        
        public static void main(String[] args) {
            Test2 a = new Test2();
            System.out.println("***************************");
            Test2 b = new Test2();
            System.out.println("***************************");
            Test2 c = new Test2();
        }
    }

    3.静态代码块

      在java中使用static关键字声明的代码块称为静态代码块

      每个静态代码块只会执行一次,由于JVM在加载类是会执行静态代码块,所以静态代码块先于主方法执行。

    如果类中包含多个静态代码块,那么将按照顺序执行。

    注意:

      01.静态代码块不能存在于任何方法体内。

      02.静态代码块不能直接访问静态实例变量和示例方法,需要通过类的实例对象来访问。

      03.静态代码块里的变量都是局部变量,只在快内有效

    public class Test2 {
        
        public Test2(){
            System.out.println("构造方法");
        }
    
        {
            System.out.println("构造代码块");
        }
        
        static{
            System.out.println("静态代码块");
        }
        
        public static void main(String[] args) {
            Test2 a = new Test2();
            System.out.println("***************************");
            Test2 b = new Test2();
            System.out.println("***************************");
            Test2 c = new Test2();
        }
    }

    public class A {
    
        public A(){
            System.out.println("构造方法 A");
            }
        
            {
            System.out.println("构造代码块A");
            }
            
            static{
            System.out.println("静态代码块 A");
            }
    }
    
    public class B extends A {
    
        public B(){
            System.out.println("构造方法 B");
            }
        
            {
            System.out.println("构造代码块 B");
            }
            
            static{
            System.out.println("静态代码块 B");
            }
            
            public static void main(String[] args) {
            B d = new B();
            }
    }

    4.静态代码块 与 静态变量之间的关系:

      为了避免出现不必要的麻烦,本人强制建议,不管是否有在静态代码块中使用 静态变量,都应该把静态变量卸载静态代码块的上方。

    public static int i = 1;
        static{
            i = 20;
            System.out.println(i);
        }
  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/WillimTUrner/p/8312810.html
Copyright © 2011-2022 走看看