【问题标题】:Calling static method without a reference variable调用没有引用变量的静态方法
【发布时间】:2014-11-26 19:39:55
【问题描述】:

为什么在 "method1( );" 中不需要引用变量来从 main 调用静态方法?

public class MainClass { 
  public static void method1() { 
    System.out.println("Method1"); 
  }
  public static void main(String[ ] args) { 
    method1(); 
  } 
}

无需像这样为非静态方法实例化 Object 变量:

MainClass var = new MainClass();
var.method1();

【问题讨论】:

  • 它们都是静态方法,在同一个声明范围内,我的意思是,你确实指出了 而在 非静态方法中你是这样调用的
  • 这与分配给静态事件的内存空间有关吗?
  • 静态方法与类定义一起加载,并且不绑定到类的实例
  • 这是哲学话语吗?这就是作用域的工作方式,并且仅仅是编译器的一种机制。

标签: java variables methods reference static


【解决方案1】:

静态成员(方法、字段)不属于任何对象实例。静态成员存在即使没有创建对象实例。所有对象实例的静态成员 SHARED。这就是为什么当您访问静态成员时,您不必使用任何对象实例。

对于您的情况:

var1.method1() = var2.method1() = var3.method1() = MainClass.method1()

因为它们调用的是同一个静态成员实例。但是建议您应该以静态方式访问静态成员。

【讨论】:

    【解决方案2】:

    static membersclass member 不是特定于对象的,所以我们不需要对象。最好的例子是public static void main(String [] args) 方法本身。

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多