Java使用方面的任何实际差异';什么是静态方法?

Java使用方面的任何实际差异';什么是静态方法?,java,static,main,Java,Static,Main,如果我有以下Java类: public class MyClass { ... public static void main(String[] args) { ... } } 如果我用下面两种不同的方式来称呼它,有什么实际的区别吗 [1] new Stock_Image_Scanner().main(null); [2] Stock_Image_Scanner.main(null); 在第一个实例中,构造函数被执行。在第二个函数中,它不是。main是一个静态函数,

如果我有以下Java类:

public class MyClass
{
  ...

  public static void main(String[] args) 
  {
   ...
  }
}
如果我用下面两种不同的方式来称呼它,有什么实际的区别吗

[1] new Stock_Image_Scanner().main(null);
[2] Stock_Image_Scanner.main(null);

在第一个实例中,构造函数被执行。在第二个函数中,它不是。

main
是一个静态函数,不应通过实例调用。只能通过类名调用:

Stock_Image_Scanner.main(null);
此外,
null
实际上应该更改为
newstring[]{}
。如@kg_sYy所述,
new
方式(通过实例)执行类构造函数,这通常是意外的,不推荐使用

更多信息:


    • 用另一种方式说同样的话:

      new Stock_Image_Scanner().main(null);
      
      做与以下相同的事情:

      new Stock_Image_Scanner();
      Stock_Image_Scanner.main(null);
      

      取决于构造函数所做的…
      MyClass.main(null)
      是正确的方式(静态访问),在第一个示例中,分配了一个对象(如果构造函数没有在任何静态属性中保存对该对象的引用,则该对象立即可用于垃圾收集).+1通过实例调用静态方法是令人困惑的。