静态变量的使用差异

时间:2016-11-27 11:07:51

标签: java static initialization static-methods

这是可以正常运行的代码,

class Temp6{

public static Hello var1 = haa();

private static Hello haa(){
  Hello ha1 = new Hello();
  return ha1;
}

public static void main(String[] args){}

}

class Hello{
int h = 10;
}

上面提到的代码什么都不做,它只是从haa()方法的返回类型中分配var1。

我再次尝试了同样的事情,我不明白为什么会收到错误,有人可以帮我找出差异和原因。

以下是可能导致此错误: error: <identifier> expected var1 = haa(); ^ 1 error 代码:

class Temp7{

public static Hello var1;
var1 = haa();

private static Hello haa(){
   Hello ha1 = new Hello();
   return ha1;
}

public static void main(String[] args){
}
}

class Hello{
 int h = 10;
}

2 个答案:

答案 0 :(得分:1)

您需要将静态初始值设定项放在static { ... }块中:

static {
    var1 = haa();
}

答案 1 :(得分:0)

在您的情况下,有两种方法可以初始化静态变量。

第一个解决方案:直接使用新关键字与声明变量相同的行。

class Temp6 {
   public static Hello var1 = new Hello();
}

第二个解决方案:将静态初始化程序放在静态初始化程序块中。当我们需要复杂的初始化程序时这样做。 (调用另一种方法,准备一些参数......)

class Temp6 {

   public static Hello var1;

   static {
      var1 = haa();
   }

   private static Hello haa(){
     Hello ha1 = new Hello();
     return ha1;
   }
}