java中的静态变量初始化

java中的静态变量初始化,java,class,static,Java,Class,Static,考虑以下代码: public class TestClass { int j=10; static int h=j; TestClass() { System.out.println(h); } public static void main(String[] args) { TestClass obj= new TestClass();

考虑以下代码:

  public class TestClass 
    {
      int j=10;
      static int h=j;

      TestClass()
      {

          System.out.println(h);
      }

      public static void main(String[] args)
      {
          TestClass obj= new TestClass();       


      }

    }
为什么这会产生错误,即使我已经在h上面声明了j。

错误是因为您将静态声明与实例变量声明混合在一起(从错误消息中可以清楚地看出,不能对非静态字段j进行静态引用)。将第一次初始化更改为

static int j = 10;

你的代码编译得很好。

接受错误并用谷歌搜索。接受错误并用谷歌搜索。