在java中设置静态变量

Moh*_*hit 8 java

我是java的新手,因此可能是一个非常noob的问题:

我上课了

public class Foo{
  private static String foo;
  private String bar;

  public Foo(String bar){
      this.bar = bar;
  }

}
Run Code Online (Sandbox Code Playgroud)

在我为类Foo实例化任何对象之前,我想设置那个静态变量foo.将在课堂上使用..我该怎么做?

另外,请纠正我的理解.foo的值在所有对象中都是相同的,因此将它声明为静态是否有意义?对?

Dan*_*lan 8

public class Foo{
  private static String foo = "initial value";
  private String bar;

  public Foo(String bar){
      this.bar = bar;
  }

}
Run Code Online (Sandbox Code Playgroud)

由于所有对象的值都相同,static因此使用正确.如果价值不仅static但也永远不变,那么你应该这样做:

public class Foo{
  private static final String FOO = "initial value";
  private String bar;

  public Foo(String bar){
      this.bar = bar;
  }

}
Run Code Online (Sandbox Code Playgroud)

注意资本化是如何改变的?这是java惯例."常数"是NAMED_LIKE_THIS.


Eug*_*ene 5

  1. foo 将在所有的实例之间共享 Foo
  2. 要初始化它:

选项A.

private static String foo = "static variable";

选项B.

private static String foo;

static {
    foo = "static variable";
}
Run Code Online (Sandbox Code Playgroud)

很少使用选项B,主要是当静态变量或潜在异常之间存在某些相互依赖关系时.

在任何一种情况下,加载类时都会发生静态init.