我遇到了一个这样设置的类:

public class MyClass {

  private static boolean started = false;

  private MyClass(){
  }

  public static void doSomething(){
    if(started){
      return;
    }
    started = true;
    //code below that is only supposed to run
    //run if not started
  }
}

我对静态方法的理解是你不应该在它们中使用类变量,除非它们是常量,并且不会改变。相反,您应该使用参数。我的问题是为什么通过执行 MyClass.doSomething() 多次调用这不会中断。在我看来它不应该工作,但确实如此。它只会通过一次 if 语句。

那么有人可以向我解释为什么这不会中断吗?

最佳答案

方法 doSomething() 和变量 started 都是静态的,所以变量只有一个副本,可以从 doSomething() 访问。第一次调用 doSomething() 时,started 为 false,因此它将 started 设置为 true,然后执行...第二次和后续调用时,started 为真,因此它什么都不做就返回。

关于java - 静态变量和方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/606196/

10-09 07:29