从不同的类中调用java中的私有静态变量

时间:2013-08-16 01:12:25

标签: java class static

我认为这可能是一个简单的问题但是我有一个类,它有一个私有的静态int变量,它在类中递增,我想在第二个类中显示这个值。但是,即使它已经增加,它也会保持打印0。

相同的代码将是

public class Test{

      private static int toIncrement;

      public static int returnValue{
          return toIncrement;
      }

      public void test{
         for(int i = 0; i < 4; i++){
               toIncrement++;
         }
      }
 }

所以上面的代码运行然后从另一个类调用Test.returnValue(); 这会返回0

4 个答案:

答案 0 :(得分:0)

  

所以上面的代码运行,然后从我调用的另一个类运行   Test.returnValue();这会返回0

当您说上面的代码运行时,并不意味着您的test方法将自动执行,而不会从任何地方调用。如果您先调用test方法,然后尝试获取Test.returnValue(),则该值不应为0.

答案 1 :(得分:0)

叹息。我从哪里开始?

public void test{
  for(int i = 0; i < 4; i++){
        toIncrement++;
  }
}

那不是构造函数。它需要移除void。由于缺少括号,这甚至都不是有效的。

public static int returnValue{
  return toIncrement;
}

再次,括号。

private static int toIncrement;

public static int returnValue{
    return toIncrement;
}

这真的是静态的吗?将其设置为静态,并调用Test.test()或使其为非静态并正确调用构造函数。

答案 2 :(得分:0)

您忘记了方法中的参数括号。 应该是:

public class Test{

    private static int toIncrement;

    public static int returnValue(){
    return toIncrement;
    }

    public void test(){
    for(int i = 0; i < 4; i++){
        toIncrement++;
    }
}

但是看到你没有在任何地方调用test(),我认为你认为它是一个构造函数。为了使它成为构造函数删除&#34; void&#34; 所以它只是:

public test()
{
    code here
}

执行此操作时,代码将在您运行程序时自动运行(只要这是您的主类,如果不是,您需要为构造函数生成它的实例。)

答案 3 :(得分:0)

使用静态块!

public class Test{

      private static int toIncrement;

      public static int returnValue(){
          return toIncrement;
      }

      static {
         for(int i = 0; i < 4; i++){
               toIncrement++;
         }
      }
 }