【转】类初始化中实例变量的执行顺序

原文链接

package com.hfview.extend;
/** * 从程序语法的角度而言,程序会在三个地方为实例变量进行初始化的工作: *1.定义实例变量的时候进行初始化 *2.非静态初始化块中对实例变量进行初始化 *3.在构造器中对实例变量进行初始化 * 以上的3种方式中,第一和第二种方式的初始化工作比第3种方式更早执行, * 而且第一和第二种方式的初始化优先性是一样的, * 他们谁优先取决于在类(源程序)中的先后顺序 */
class Cat

{

    String name;

    int age;

    // 使用构造器初始化name,age两个实例变量

    public Cat(String name, int age) {

        System.out.println("执行构造器");

        this.name = name;

        this.age = age;

        weight = 3.0;
    }

    {

        System.out.println("执行非静态初始化块");

        weight = 2.0;

    }

    // 定义时指定初始值

    double weight = 2.3;

    public String toString() {

        return "Cat[name=" + name + ",age=" + age + ",weigth=" + weight + "]";

    }

}

public class InitTest {
    public static void main(String[] args) {

        Cat cat = new Cat("kitty", 2);

        System.out.println(cat);

    }
}

结果
【转】类初始化中实例变量的执行顺序_第1张图片

你可能感兴趣的:(java,实例变量初始化)