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

  • 相关阅读:
    .net中实现运行时从字符串动态创建对象
    C# 用 VB.net 函數庫 實現全角與半角轉換
    實現.net 加載插件方式
    VS2008下載
    Lotus Notes Send EMail from VB or VBA
    用C#写vs插件中的一些Tip
    SQL2005中异常处理消息框可直接使用
    C#路径/文件/目录/I/O常见操作汇总
    利用.net反射动态调用指定程序集的中的方法
    说说今年的计划
  • 原文地址:https://www.cnblogs.com/csu_xajy/p/4242654.html
Copyright © 2011-2022 走看看