1. 静态域
如果将域定义为 static,每个类中只有一个这样的域。而每一个对象对于所有的实例域都有自己的一份拷贝。直接看代码吧。
class Employee {
private static int NextId = 1;
private int id;
}
这里给 Employee 类添加了一个实例域 id 和一个静态域 NextId。现在每一个雇员对象都有一个自己的 id 域,但这个类的所有实例域都将共享一个 NextId 域。即使我们没有任何雇员对象,这个静态域 NextId 也是存在的。它属于类,而不属于任何一个独立的对象。
我们制造一个新的 Employee 对象 aaron,并且调用一个方法。
public void setId() {
id = NextId;
NextId ++;
System.out.println("NextId: "+NextId +" Id: " + id);
}
Employee aaron = new Employee();
aaron.setId();
其实我们做的操作相当于:
aaron.id = Employee.NextId;
Employee.NextId ++;
2. 静态方法
静态方法是一种不能对对象实施操作的方法。
public class ArrayIndex {
public static void f() {
System.out.println("hello AaronYu");
}
public void g() {
System.out.println("hello aaron");
}
public static void main(String[] args) {
f();
ArrayIndex.f();
ArrayIndex array = new ArrayIndex();
array.g();
// ArrayIndex.g();
array.f();
}
}
上面的代码中我构造了一个静态方法和一个实例方法作为对照。
静态方法我们可以直接调用,或者通过类名调用。如 f();
ArrayIndex.f(); 或者通过对象调用,如 array.f(); 不过不建议通过这种方法调用,我建议通过类名调用。
对于实例方法,我们要构造一个对象如 array 来调用实例方法,如 array.g(); 会打印输出: hello aaron
System.out.println("点个喜欢!欢迎关注我!");