java—在示例化一个新类时,有人能解释一下我代码的初始化顺序吗

busg9geu  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(293)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

15天前关门了。
改进这个问题
当使用示例初始化块示例化一个新类时,有人能解释一下我的代码的初始化顺序吗
当我示例化一个类型为 B 并打印字段的值 objB.b1 以及 objB.b2 代码将输出:

b1 = 2, b2 = 10;

这是密码-

class B {

    int b1 = 5;

    {
        this.b1 = 2;
        this.b2 = 6;
    }

    int b2 = 10;

    public B()
    {

    }

    public static void main(String[] args)
    {
        B objB = new B();
        System.out.println("b1 = " + objB.b1 + ", b2 = " + objB.b2);
    }
}

为什么打印这些值而不打印分配的其他值?

llycmphe

llycmphe1#

代码输出的原因 b1 = 2, b2 = 10; 是因为要传递给输出流的值
初始化的简化顺序是
静态变量和静态初始值设定项
按文本顺序排列的示例变量和示例初始值设定项
施工人员
因此,在您的代码中,您按从左到右的顺序分配值,这些值在类的源代码中以文本形式出现

int b1 = 5;

// instance initialization block
{       
    this.b1 = 2;
    this.b2 = 6;
}

int b2 = 10;

所以初始化 int b1 = 5; 和转让 this.b2 = 6; 由于以后的任务,基本上是多余的。
因此,价值观 2 以及 10 传递给 System.out.println("b1= " + objB.b1 + " ,b2= " + objB.b2); 输出:

b1 = 2, b2 = 10;

java-12.5版。创建新的类示例

相关问题