zoukankan      html  css  js  c++  java
  • Java 初始化字段方式和顺序

    Java 初始化字段方式和顺序:

    1. 类加载时直接初始化静态字段;

    2. 类加载时调用静态方法初始化静态字段;

    3. 实例化对象时,在调用构造函数之前代码块中初始化字段;

    4. 实例化对象时,在调用构造函数之时初始化字段;

      初始化字段顺序1->2->3->4

    代码如下:

    public class Employee {
    
    //实例化对象时,在调用构造函数之前前初始化字段;
    
        private int id; // 实例化对象时初始化为0
    
        private String name; // 实例化对象时初始化为null
    
        private boolean flag; // 实例化对象时初始化为false
    
    
    
        private static int age = 22; // 加载类时初始化为22
    
    
    
        // 在构造函数之前初始化
    
        {
    
            int num = 1111; // 实例化对象时初始化为1111
    
            String name = "QA";// 实例化对象时初始化为QA
    
            setId(num); // 实例化对象时调用
    
            SetName(name); // 实例化对象时调用
    
            System.out.println("call instance method");
    
        }
    
    
    
    //类加载时调用静态方法初始化静态字段;
    
        static {
    
            System.out.println("age is: " + age);
    
            age = 30; // 加载类时初始化为33
    
            print(); // 加载类时时调用
    
        }
    
    
    
        public void SetName(String name) {
    
            this.name = name;
    
        }
    
    
    
        public int getId() {
    
            return id;
    
        }
    
    
    
        public String getName() {
    
            return name;
    
        }
    
    
    
        public static int getAge() {
    
            return age;
    
        }
    
    
    
        public void setId(int num) {
    
            id = num;
    
        }
    
    
    
        public static void print() {
    
            System.out.println("call static method");
    
        }
    
    
    
        public Employee() {
    
            // TODO Auto-generated constructor stub
    
        }
    
    
    
        public Employee(int id, String name) {
    
            // TODO Auto-generated constructor stub
    
            this.id = id;
    
            this.name = name;
    
            System.out.println("call constructor method");
    
        }
    
    
    
        public static void main(String[] args) {
    
            // TODO Auto-generated method stub
    
            System.out.println("---------------------------");
    
    
    
            System.out.println("age is: " + Employee.getAge());
    
            System.out.println("---------------------------");
    
    
    
            Employee e = new Employee();
    
            System.out.println("id is: " + e.getId());
    
            System.out.println("name is: " + e.getName());
    
            System.out.println("---------------------------");
    
    
    
            Employee e2 = new Employee(2222, "Dev");
    
            System.out.println("id is: " + e2.getId());
    
            System.out.println("name is: " + e2.getName());
    
        }
    
    }

    运行结果:

    age is: 22

    call static method

    ---------------------------

    age is: 30

    ---------------------------

    call instance method

    id is: 1111

    name is: QA

    ---------------------------

    call instance method

    call constructor method

    id is: 2222

    name is: Dev

  • 相关阅读:
    进程通信方式-管道pipe
    进程间通信
    信号的发送与处理
    信号应用于事件通知
    信号的屏蔽,信号集
    信号的发送kill,raise,alarm,setitimer,abort,sigqueue
    信号处理函数的返回sigsetjmp/siglongjmp
    POJ 1562 Oil Deposits
    HDU 1016 Prime Ring Problem
    HDU 1010 Tempter of the Bone
  • 原文地址:https://www.cnblogs.com/csu_xajy/p/4242654.html
Copyright © 2011-2022 走看看