java中static关键字 对程序起一个“牧羊人”的角色
static有两大用处
1,对于只想创建一个存储空间来存放这个对象时
例如 class StaticTest{static int i = 47;} 这个StaticTest这个类中有一个静态变量i
在调用时 StaticTest st1 = new StaticTest();这个时StaticTest对象创建 存储到堆中。如果这时再创建一个StaticTest st2 = new StaticTest();
通常情况下st1.i和st2.i是两个对象到引用 所以会有两个不同地方来存储。但用static修饰但i会指定在一个地方对起值存储
所以st1.i和st2.i指向同一存储空间 其值都为47
2,用于没有创建对象而对对象内部对方法或者值调用
例如 class StaticTest{static int i = 47;}
一般情况要想取得StaticTest中对i的值 需要 StaticTest st1 = new StaticTest();然后st1.i来获取其值
但用static修饰后 可以直接用类名加方法名来获取值 StaticTest.i这样就可以取到其值了