用static修饰的是类方法,否则是实例方法。
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,在该类创建对象后,才分配。从而实例方法可以被类创建的任何对象调用执行,注意,当类创建第一个对象时就分配入口地址,当再创建对象时不分配。即方法的入口地址被所有对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
而类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。类方法的入口地址直到程序退出才被取消。类方法不仅可以被类创建的所有对象调用,也可以通过类名调用。而实例方法不可以通过类名调用。
在Java语言中,类中的类方法,不可以操作实例变量,也不可以调用实例方法,因为在类创建对象之前,实例变量没有内存空间,实例方法没有入口地址。
如果一个方法不需要操作实例成员变量就可以实现某种功能,就可以考虑声明为类方法,避免创建对象浪费内存!