为什么每次调用时我的静态变量值都会改变?

时间:2014-02-21 16:44:22

标签: java static static-methods static-members

每次调用getIndex时,MyClass的静态方法都会打印"索引:1"向屏幕。我想增加或减少指数的价值。我的代码出了什么问题?

public class MyClass 
{
    public static int index=0;

    public static void getIndex()
    {
       index++;
       System.out.println("Index:"+index);
       if(index>10)
            index=0;
    }
}

2 个答案:

答案 0 :(得分:2)

当我添加代码来调用您的示例时,它可以按预期工作:

public class MyClass 
{
    public static int index=0;

    public static void getIndex()
    {
       index++;
       System.out.println("Index:"+index);
       if(index>10)
            index=0;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 12; i++) {
            getIndex();
        }
    }
}

打印:

Index:1
Index:2
Index:3
Index:4
Index:5
Index:6
Index:7
Index:8
Index:9
Index:10
Index:11
Index:1

到控制台。所以你怎么称呼这个问题一定是个问题。

答案 1 :(得分:1)

猜测:你只在程序中调用getIndex()一次,然后多次运行该程序。那不行;在程序的实例中不保留变量值。每次启动程序时,index都会重置为0.在程序的一次运行中多次调用getIndex(),您将看到它按预期递增。