• 总结类体中的内容及其执行的先后顺序(学习中途总结)


    class 类体中内容{
    //    静态代码块     类加载的时候执行,并且只执行一次,执行时机先于主方法
    //    实例代码块     在构造方法执行之前执行,构造方法执行一次,实例代码块就执行一次
    
    //    静态变量    在类加载时初始化 存在于方法区内存 使用"类名."来访问
    //    实例变量    在创建java对象(构造方法执行时)时初始化 存在于堆内存java对象内部 使用"引用."来访问
    
    //    静态方法    使用"类名."来调用
    //    实例方法    使用"引用."来调用
    
    //    主方法(入口)
    //    构造方法    用来创建java对象  使用关键字"new"来调用
    
        /**
         * 各种方法和代码块在类加载的时候都存放在方法区内存中,在执行的时候在栈中为其分配内存(压栈),执行结束后弹栈
         * 静态代码块的执行与静态变量的初始化没有先后顺序 它们按照自上而下的顺序执行
         */
        /*
        执行顺序分析
            1、首先是静态代码块,它优先于主方法先执行,并且只执行一次,又因为静态代码块有两个,按照由上到下的顺序(1 8)
            2、然后是主方法执行,在主方法里,代码也是按照由上到下的顺序执行,所以输出(2 )
            3、这时开始执行无参构造方法,而实例代码块的执行先于构造方法,所以输出(7 5 3 )
            4、到此开始执行有参构造,实例代码块的特点是每次构造方法执行,他都先执行一次,所以输出(7 6 4 )
            为此最后的输出结果是:1 8 2 7 5 3 7 6 4 
         */
        //属性
        int i;
        //静态代码块
        static {
            System.out.print("1 ");
        }
        //主方法
        public static void main(String[] args) {
            System.out.print("2 ");
            new 类体中内容();
            System.out.print("3 ");
            new 类体中内容(111);
            System.out.print("4 ");
        }
        //无参构造方法
        public 类体中内容() {
            System.out.print("5 ");
        }
        //有参构造方法
    
        public 类体中内容(int i) {
            this.i = i;
            System.out.print("6 ");
        }
    
        //实例代码块
        {
            System.out.print("7 ");
        }
        //静态代码块
        static {
            System.out.print("8 ");
        }
    }
  • 相关阅读:
    基于Jquery实现一个连连看小游戏,我赌你连普通级也过不去
    MySQL:增量备份和恢复(5)
    pytest-rerunfailures插件之测试用例失败重跑
    redis击穿问题使用锁实现方案
    Hive (六) --------- 查询
    昇思25天学习打卡营第13天 | ResNet50迁移学习
    【大数据+爬虫+可视化】基于Python的房价数据分析系统
    【最详细】最新最全Redis面试大全(50道)
    计算几何+2sat:1020T3
    严选算法模型质量保障
  • 原文地址:https://blog.csdn.net/heliuerya/article/details/127890978