static
- 静态
- 静态成员属于类,而不属于对象
- 调用静态成员,一般使用类名调用
s1 = new Soldier()
s2 = new Soldier()
s1.count = 1;//容易误解成对象的属性
s2.count = 2;
print(s1.count)
---------------
Soldier.count = 1;
Soldier.count = 2;
-
什么时候使用静态
*)静态使用的原则: 能不用就不用
*)静态不属于对象,是“非面向对象”的语法 *)使用场景: *)共享的数据 节省内存 *)工具方法
Math.sqrt()
Math.random()
Integer.parseInt()
String.valueOf()
-
静态方法中,只能调用静态成员,不能直接调用非静态成员
*)由于被static修饰的成员与对象无关,所以,某个类中被static修饰的成员仅会存在1个,无论用类名去引用,或用该类的某个对象去引用,访问到的都是同一个数据!所以,被static修饰的属性在一定程度上可以理解为是“共享的”!
*)被static修饰的成员将最优先加载到内存中,且最后才会被释放内存,所以,被static修饰的成员是“常驻内存的”!
class A {
public static void main(String[] args) {
f();
A a = new A();
a.g();
}
static void f() {
}
void g() {
}
}
- 静态初始化块
class A {
static {
执行一些初始化工作
在类被加载时,只执行一次
}
}
由于被static修饰的成员与对象无关,所以,某个类中被static修饰的成员仅会存在1个,无论用类名去引用,或用该类的某个对象去引用,访问到的都是同一个数据!所以,被static修饰的属性在一定程度上可以理解为是“共享的”!