zoukankan      html  css  js  c++  java
  • jvaa之初始化块

    1.初始化块的作用:对java对象进行初始化;

    2.程序的执行顺序:声明成员变量的默认值-->显示初始化,多个初始化块依次被执行(同级别下按先后顺序执行)-->构造器在对成员进行赋值操作。

    public class Person extends Object{
        String name;
        public Person() {
            this.name = "tom";
            System.out.println("执行的是构造方法");
        }
        {
            System.out.println("执行的是非静态代码块");
        }
    }
    public class Main {
        
        public static void main(String[] args) {
            Person p = new Person();
        }
    }

    输出:

    执行的是非静态代码块1

    执行的是非静态代码块2

    执行的是构造方法

    3.静态代码块:当类在被载入时,类属性的声明和静态代码快先后顺序被执行,且只被执行一次;静态代码块里面只能用static修饰的属性和方法;

    package insof;
    
    public class Person extends Object{
        String name;
        static int age;
        public Person() {
            this.name = "tom";
            System.out.println("执行的是构造方法");
        }
        {
            System.out.println("执行的是非静态代码块1");
        }
        {
            System.out.println("执行的是非静态代码块2");
        }
        static{
            age = 11;
            System.out.println("执行的是静态代码块1");
            showAge();
        }
        static{
            System.out.println("执行的是静态代码块2");
        }
        public static void showAge() {
            System.out.println(age);
        }
    }
    package insof;
    
    public class Main {
        
        public static void main(String[] args) {
            Person p = new Person();
            Person p1 = new Person();
        }
    }

    输出:

    执行的是静态代码块1
    11
    执行的是静态代码块2
    执行的是非静态代码块1
    执行的是非静态代码块2
    执行的是构造方法
    执行的是非静态代码块1
    执行的是非静态代码块2
    执行的是构造方法

    说明:每次new一个对象,给静态代码块都要被执行,而静态代码块只执行一次。

    非静态代码块:

    • 可以有输出语句;
    • 可以对类的属性声明进行初始化操作;
    • 可以调用静态和非静态的属性和方法;
    • 若有多个非静态的代码块,那么按照从上到下的顺序一次执行;
    • 每次创建对象的时候,都只会执行一次,且优先于构造方法;

    静态代码块:用static修饰的代码块

    • 可以有输出语句;
    • 可以对类的属性声明进行初始化操作;
    • 不可以对非静态的属性初始化,即:不可以调用非静态的属性和方法;
    • 静态代码块的执行顺序优先于非静态代码块;
    • 静态代码块只执行一次;
  • 相关阅读:
    【Python学习之旅】---模块介绍(re模块,正则表达式)
    【Python学习之旅】---模块介绍(sys模块)
    【Python学习之旅】---模块介绍(随机模块)
    【Python学习之旅】---模块介绍(时间模块)
    【Python学习之旅】---模块介绍(调用与执行)
    【Python学习之旅】---装饰器实现(高阶函数+函数嵌套+闭包,不修改函数调用方式和源代码)
    【Python学习之旅】---生成器的好处
    Educational Codeforces Round 61 (Rated for Div. 2) C
    牛客练习赛41 B. 666RPG
    牛客练习赛41 B. 666RPG
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12054425.html
Copyright © 2011-2022 走看看