关于静态的Java问题

时间:2011-07-05 13:57:26

标签: java static

我今天在代码中遇到了这个错误,需要一段时间来计算。我发现它很有趣所以我决定分享它。以下是问题的简化版本:

public class Test {

    static
    {
      text = "Hello";
    }

    public static String getTest() {
      return text + " World";
    }

    private static String text = null;
}

猜猜Test.getTest();返回什么&为什么呢?

5 个答案:

答案 0 :(得分:18)

它应该打印“null world”。静态初始化按列出的顺序完成。如果您将声明移动到高于静态块,则应该获得“Hello World”。

答案 1 :(得分:1)

它返回“null World”文档声明静态初始化按它在源代码中出现的顺序发生,因此如果将静态块向下移动到底部,它将返回“Hello World”

答案 2 :(得分:0)

返回null World因为text变量初始化两次,第一次是“Hello”,第二次是null。 如果您在静态初始化之前移动text变量声明,则会得到Hello World

答案 3 :(得分:0)

答案应该是“无效世界”。

答案 4 :(得分:0)

Java Initializers被定义为按照它们在源代码中出现的顺序执行,因此初始化块将在为文本赋值为null之前运行。

专业提示反对此类错误:使您的静态变量最终,或者根本不使用静态变量。