Java基础-静态域和静态方法
静态域
带有static标识符,这部分变量具有独立的存储空间,与对象无关,而是与整个类相关,类的所有实例共享静态域,不属于任何独立的对象。
类没有创建实例,静态域也存在。
在类第一次加载的时候,会进行静态域的初始化。
静态初始化语句和静态初始化块按照类定义的顺序执行
例如:
class Student{ private static int nextId = 1; private int id; }
每个学生对象,都有自己的id,但是这个学生类的所有实例对象将共享一个nextId域。几时没有一个对象存在,静态域nextId仍然存在。
静态常量
静态变量使用的比较少,但是静态常量使用的比较多
例如:
1 public class Math { 2 public static final double PI = 3.141592653; 3 }
通过Math.PI获得常量。若去掉static,则需要通过Math类对象访问
ps:final关键字讲解
静态方法
java语言中的实例方法属于对象的成员,而不是类的成员。静态方法属于类的成员。
静态方法是不能向对象实施操作的方法,因为它没有this参数(隐式参数),就不能访问类中实例域,只能访问类中的静态域。
直接通过类名调用静态方法
1 class Employee { 2 private static int Id; 3 public static int getId() { 4 return Id; 5 } 6 } 7 8 int n = Employee.getId();
下面两种情况可使用静态方法:
- 不需要访问对象状态,所需参数都通过显示参数提供 (Math.pow)
- 只需要访问类的静态域 (Employee.getId)
类方法可以调用其他类的static方法。
可以在类方法中生成实例对象再调用实例方法。
调用类方法的方式:可由实例对象调用,还可以由类名直接调用。
另外,在类方法中不能使用 this 或 super。 关于类方法的使用,有如下一些限制:
- 在类方法中不能引用对象变量。
- 在类方法中不能使用super、this关键字。
- 类方法不能调用类中的对象方法。