关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
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);
}
}
为什么打印这些值而不打印分配的其他值?
1条答案
按热度按时间llycmphe1#
代码输出的原因
b1 = 2, b2 = 10;
是因为要传递给输出流的值初始化的简化顺序是
静态变量和静态初始值设定项
按文本顺序排列的示例变量和示例初始值设定项
施工人员
因此,在您的代码中,您按从左到右的顺序分配值,这些值在类的源代码中以文本形式出现
所以初始化
int b1 = 5;
和转让this.b2 = 6;
由于以后的任务,基本上是多余的。因此,价值观
2
以及10
传递给System.out.println("b1= " + objB.b1 + " ,b2= " + objB.b2);
输出:java-12.5版。创建新的类示例