当创建类时,就是在在描述哪个类的对象的外观与行为。除非用new来创建那个类的对象,否则不会获得任何对象。执行new来创建对象时,数据存储空间才会分配,其方法才供外界调用。
有两种情况用上述方法无法解决。一是只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至不去创建对象。二是希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也可以调用这个方法。
通过static可以满足这两方面的需求。当声明一个事物是static时,就意味着这个域或方法不会与包含它的哪个类的任何对象实例关联在一起。so,即使从未创建某个类的任何对象,也可以调用它的static方法或者static域。(static字段对每个类来说都只有一个存储空间,而非static则是对每个对象都有一个存储空间。)