java - 静态变量和方法

标签 java static-methods static-members

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

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/

相关文章:

java - 400 Bad request 在 Spring Controller 中将嵌套 json 对象映射到 java.util.Map 时出错

java - 在 ShowcaseViews 按钮上启动新 Intent

c++ - 在实例的构造函数中初始化静态成员

c++ - 如何强制执行包括模板成员在内的依赖静态对象的初始化顺序?

c++ - 静态与外部 "C"/"C++"

JAVA。 GSON。如何将参数传递给 toJson()?

java - hadoop 关于如何处理日志的建议

c++ - 在 C++ 中,我可以将类类型表示为变量吗?

java - 如何使用方法执行以下操作?