Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从其他类调用java中的私有静态变量_Java_Class_Static - Fatal编程技术网

从其他类调用java中的私有静态变量

从其他类调用java中的私有静态变量,java,class,static,Java,Class,Static,我认为这可能是一个直截了当的问题,但是我有一个类,它有一个私有的静态int变量,这个变量在类中递增,我想在第二个类中显示这个值。但是,即使0已递增,它仍会继续打印出0 同样的代码也可以 public class Test{ private static int toIncrement; public static int returnValue{ return toIncrement; } public void test

我认为这可能是一个直截了当的问题,但是我有一个类,它有一个私有的静态int变量,这个变量在类中递增,我想在第二个类中显示这个值。但是,即使0已递增,它仍会继续打印出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++;
         }
      }
 }
公共类测试{
私有静态int-to-increment;
公共静态返回值{
回归增长;
}
公共空隙试验{
对于(int i=0;i<4;i++){
toIncrement++;
}
}
}
因此,上面的代码运行,然后从另一个类调用Test.returnValue(); 这个返回0

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


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

。我从哪里开始

public void test{
  for(int i = 0; i < 4; i++){
        toIncrement++;
  }
}
同样,括号

private static int toIncrement;

public static int returnValue{
    return toIncrement;
}

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

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

public class Test{

    private static int toIncrement;

    public static int returnValue(){
    return toIncrement;
    }

    public void test(){
    for(int i = 0; i < 4; i++){
        toIncrement++;
    }
}
当您这样做时,代码将在您运行程序时自动运行(只要这是您的主类,如果不是,您需要为构造函数创建一个实例来运行。)

使用静态块

public class Test{

      private static int toIncrement;

      public static int returnValue(){
          return toIncrement;
      }

      static {
         for(int i = 0; i < 4; i++){
               toIncrement++;
         }
      }
 }
公共类测试{
私有静态int-to-increment;
公共静态int returnValue(){
回归增长;
}
静止的{
对于(int i=0;i<4;i++){
toIncrement++;
}
}
}

@hovercraftfullofels都在那里。@hexafraction:啊,上面的代码甚至都没有编译。对于原始海报:请不要浪费我们的时间张贴“垃圾”代码供我们审查。如果您遇到了严重的问题,希望得到认真的帮助,请只发布真实的代码。您的类首先是如何编译的。您知道如何用Java编写方法吗?“即使是这样,它也没有用,因为
toIncrement
是静态的,它会崩溃。”它不会崩溃。静态变量可以在非静态上下文中使用(只有相反的是不正确的)。@arshajii谢谢,我总是很难混淆2,尽管现在看起来很直观。
public test()
{
    code here
}
public class Test{

      private static int toIncrement;

      public static int returnValue(){
          return toIncrement;
      }

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