创建类时,就是在描述那个类的对象的外观行为。除非用new创建那个类的对象,否则,实际上并未获得任何对象。执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用。
static的两个作用:
第一:只想为某个特定域分配单一存储空间,而不考虑究竟要创建多少对象,甚至根本就不创建对象。
第二:希望某个方法不与包含它的类的任何对象关联在一起,即使没有创建对象,也能够调用这个方法。
只需将static关键字放在定义之前,就可以将字段或者方法设定为static.
class StaticTest{
static int i = 47;
}
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
在这里st1和st2指向同一存储空间,具有相同的47.
并且可以直接通过 类名加变量名引用:
StaticTest.i++;
对于static方法的调用,可以直接用类名加方法名的方式调用。也可以典型的new对象,然后通过对象调用。
static字段对每个类来说都只有一份存储空间,而非static字段则对每一个对象都有一个存储空间。
static方法最重要的用法就是不创建任何对象的前提下就可以调用。所以main方法都是static的。
是否定义成静态static方法:
方法是否用静态修饰,就参考一点,就是该方法功能是否有访问到对象中特有的数据:
该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。如果不需要,就可以将该功能定义成静态的。
是否定义成静态static变量:
对象中的成员变量都相等,静态。不同,非静态。相同数据不需要修改,只是使用,静态。