0

我无法理解这段代码的输出。

班上;

public class StaticMethodClass {

  public String str = display();

  public static String display() {
    System.out.println("Static Method");
    return "Hello";
  }

}

主要的;

public static void main(String[] args) {
    System.out.println("Main");
    StaticMethodClass methodClass = new StaticMethodClass();
    System.out.println(methodClass.str);
  }

输出;

Main
Static Method
Hello

为什么会自动调用display()方法?

4

4 回答 4

4

当您创建类的实例时,它将需要初始化所有字段。因此,display()调用该方法进行初始化"str"

于 2013-10-23T11:44:45.640 回答
4

因为,您display在类的实例中调用了方法。

public String str = display();
于 2013-10-23T11:44:51.307 回答
1

当您创建一个新的 StaticMethodClass 时,它会通过调用 display() 来初始化 str。

于 2013-10-23T11:44:52.543 回答
0

因为类成员str是在创建类对象时使用此方法初始化StaticMethodClass的。main()您在方法中创建一个对象。

于 2013-10-23T11:46:47.123 回答