我们可以在构造函数中初始化静态变量吗?

abh*_*489 5 java

我有以下代码片段:

class Constructor {

  static String str;

  public void Constructor() {
      System.out.println("In constructor");
      str = "Hello World";
  }

  public static void main(String[] args) {
      Constructor c=new Constructor();
      System.out.println(str);
  }
}
Run Code Online (Sandbox Code Playgroud)

即使字符串在构造函数内初始化,其输出也为null.

为什么会这样?

Mal*_*jam 9

public void Constructor()不是构造函数..它是一个void方法.如果删除它void,它应该按预期工作


Spr*_*ner 5

正如我在评论中提到的那样,public void Constructor(){它不是构造函数,因为构造函数没有返回类型Constructor.因为它是无效的,所以它不是构造函数

删除void关键字

class Constructor {

static String str;

public Constructor(){
    System.out.println("In constructor");
    str="Hello World";
}

public static void main(String[] args) {
    Constructor c=new Constructor();

    System.out.println(str);

}


}
Run Code Online (Sandbox Code Playgroud)

输出:Hello World