java 我怎么得到这个输出?我不明白

zaq34kh6  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(131)
class ClassOne
{
     static int i, j = 191919;
 
     {
         --i;
     }
 
     {
         j++;
     }
}
public class ClassTwo extends ClassOne
{
    static
    {
        i++;
    }
 
    static
    {
        --j;
    }
 
    public static void main(String[] args)
    {
        System.out.println(i);
 
        System.out.println(j);
    }
}

我得到的输出为

i=1
j=191918
axkjgtzd

axkjgtzd1#

static int i, j = 191919;仅将j初始化为191919。i初始化为默认值0。

63lcw9qa

63lcw9qa2#

首先,ClassOne 是静态创建的,将 j191919 赋值。
然后,静态地创建 ClassTwo,然后执行 * 静态初始化块 *,将 i 递增1,随后将 j 递减1。
您的值现在分别为 1191918
我相信你的差异在于 * 示例初始化块 *,在 ClassTwo 内。

这些只在新示例上执行,而不是在 * 静态 * 初始化时执行。

相关问题