不了解静态初始化程序的输出

时间:2018-07-27 22:39:23

标签: java

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

解决方案说,输出为:u u ucrcr

我知道静态初始化器只被调用一次,所以 我不明白为什么要打印第三个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 + " ");

    }
}

1 个答案:

答案 0 :(得分:0)

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

加载订单类后,result为u。您执行System.out.print(Order.result + " ");来第一次输出,而您执行System.out.print(Order.result + " ");来第二次输出。然后,创建2个Order类的实例,从而两次附加“ cr”,并附加resultucrcr的方式,因此输出ucrcr,您的位置是第三位。

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