在类体内使用关键字static修饰的变量和方法分别称为类变量和类方法,而不是用该关键字修饰的变量和方法分别成为对象变量和对象方法。
关于静态变量需要注意的要点有:
- 静态变量不属于某个对象,而是属于整个类的;
- 静态变量对于所有对象来讲,是一个公用变量;
- 静态变量可以通过类名直接访问,也可以通过对象来访问,两种访问方法是等同的
关于静态方法需要注意的要点有:
- 静态方法在内存中的代码是随着类的定义而进行分配的,它不被某个对象所专有
- 静态方法只能处理静态变量或者调用静态方法,不能用来处理对象变量或者对象方法
- 调用静态方法通常使用类名,但是使用对象名访问也是正确的
以下是参考代码:
- class A
- {
- int a;
- static int b; //可以将b理解为一个全局变量,所有的对象或者类对它的访问都是同一变量
- void setab(int i)
- {
- a = i;
- b = i + 1;
- }
- int getab()
- {
- return a;
- }
- static void setstatic(int i)
- {
- b += i;
- }
- static int getstatic()
- {
- return b;
- }
- }
- public class TestStatic
- {
- public static void main(String args[])
- {
- A x = new A();
- A y = new A();
- x.setab(5); //非静态方法必须通过类的实例访问 a = 5, b = 6
- y.setab(10); // a = 10, b = 11
- System.out.println("x.a = " + x.getab() + ", y.a = " + y.getab());
- x.setstatic(-5); //静态方法可以通过类名直接访问,也可以通过类的实例访问
- y.setstatic(-10);
- System.out.println("x.b = " + x.getstatic() + ", y.b = " + y.getstatic());
- }
- }