1. 静态字段
1. 用static修饰的字段。
2. 实例字段在每个实例中有自己的独立”空间“,静态字段只有共享”空间“,所有实例共享该字段。
3. 使用”类名.静态字段“调用静态字段,静态字段不属于实例,是类class本身的字段。
4. ”实例变量.静态字段“访问静态变量不推荐,因为在java程序中,实例对象没有静态字段,实例对象能访问静态字段是因为编译器可以根据实例类型自动转换为”类名.静态字段“来访问静态变量。
2. 静态方法
1. 用static修饰的方法。
2. 使用”类名.静态方法“调用静态方法,静态方法类似其他语言的函数。
3. 因为静态方法属于class而不属于实例,所以,静态方法内部,无法访问this变量,也无法访问实例字段,只能访问静态字段。
4. 使用”实例变量.静态方法“访问静态方法不推荐,能编译通过是因为编译器根据实例类型自动转换为”类名.静态方法“来访问静态方法。
5. 静态方法常用于工具类。
3. 接口的静态字段
1. 因为interface是一个纯抽象类,不能被实例化,所以不能定义实例字段,但是interface本质也是一个class,所以它可以有静态字段,但静态字段必须是final类型。
2. 实际上,因为interface的字段只能是”public static final“类型,所以编译器会自动加上,修饰符直接去掉。
4.总结
1. 静态代码块,程序一加载就运行,最早执行,只执行一次。
2. 静态方法区的属性和方法在类中是共享的唯一的(不允许被重写),不属于某个实例;创建多个实例,只要修改了一个实例,所有的实例都会被修改。
3. 因为静态属性和方法是共享的,属于类,所以用“类名.属性”或“类名.方法名”直接调用。
4. static和final同时修饰叫做全局常量。