http://www.tianya.cn/techforum/Content/414/4347.shtml
java的static关键字是非常有用的.
有两种情况是non-static无法做到的,这时你就要使用statice。
第一种:你希望不论产生了多少个对象,或不存在任何对象的情形下,那些特定数据的存储空间都只有一份;
第二种:你希望某个函数不要和class object绑在一起。即使没有产生任何object,外界还是可以调用其static函数,或是取用其static data。
如何理解呢,看完下面的小例子,就会理解了。
public class StaticTest {
static int i = 47;
}
public class Test {
public static void main(String[] args) {
StaticTest t1 = new StaticTest();
StaticTest t2 = new StaticTest();
t1.i = 50;
System.out.println(t1.i);
System.out.println(t2.i);
}
}
结果为:
50
50
为什么会有这样的结果呢?这是因为它们都指向同一块内存。
另外,调用static函数或变量,除了利用对象定址外(t1.i = 50),也可以直接使用其class名,即(StaticTest.i = 50)。