- 只想为特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象
- 希望某个方法不与包含他的类的任何对象关联在一起。也就是说没有创建对象也能调用这个方法
也就是说当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。
如下图所示:StaticTest类定义了两个属性,一个是static的一个是普通的
然后我们在外部进行调用「注意:此时并未创建StaticTest类的对象」
可以看到,只能调用static且public下的属性。
当实例化对象后:
又是新的一翻景象!
通常,必须创建一个对象,并用它来访问数据或方法,因为非static域和方法必须知道和他们一起运作的对象。
如下图所示,即使创建了两个StaticTest对象,staticTest类的static属性name_pub也是共用了同一份内存空间!
尽管当static作用于某个字段时,肯定会改变数据创建的方式,因为一个static字段对于每个类来说都只有一份内存空间,而非static字段则对每个对象有一个存储空间。但是如果static作用于一个方法时和普通方法的区别并不大。static方法的一个重要用法是在不创建任何对象的前提下就可以调用它。这一点对于main方法很重要!public ststic void main
很熟悉吧!