Java使用方面的任何实际差异';什么是静态方法?
如果我有以下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是一个静态函数,
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通过实例调用静态方法是令人困惑的。