首页 > 解决方案 > 不了解静态初始化程序的输出

问题描述

所以目前我正在为 Oracle 认证的助理 Java 做准备……我遇到了这个问题:以下代码的输出是什么

解决方案说 s 输出是: uu uccrr

我知道静态初始化程序只被调用一次,所以我不明白为什么要打印第三个 u

package com.company;

class Order {

    static String result = "";

    {
        result += "c";
    }

    static {
        result += "u";
    }

    {
        result += "r";
    }
}

public class Main {

    public static void main(String[] args) {

        System.out.print(Order.result + " ");

        System.out.print(Order.result + " ");

        new Order();

        new Order();

        System.out.print(Order.result + " ");

    }
}

标签: java

解决方案


它输出Order.result3 次,这u就是打印 3 次的原因。

订单类加载后,result就是u。你System.out.print(Order.result + " ");第一次输出它,你System.out.print(Order.result + " ");第二次输出它。然后,您创建了 Order 类的 2 个实例,从而将“cr”附加了两次,以及您result的情况如何ucrcr,因此您输出ucrcr了第三个您的位置。

您必须考虑到System.out.print这里使用的事实。


推荐阅读