一、概述
在类中,可以定义一个与任何该类的对象都没有关系的成员。在通常情况下,类的成员必须通过类的对象访问。但是。也可以创建一个不需要特定实例变量的引用就可以访问的成员。这样的成员可认为作用于整个类。为创建这种成员,需要在成员声明前加关键字static。
一个成员声明为static时,它可以在创建任何类对象之前访问,也可以不通过任何对象的引用访问。方法和变量都可以声明为static。最常见的static成员的例子是main()。由于main()方法需要在程序开始前由JVM调用,所以它声明为static。要在类外使用static成员,只需要用类名后加点运算符加方法名即可,而不需要创建对象。
二、三种static关键字应用
(1)静态变量
声明为static的变量本质上是全局变量。在创建对象时,并没有复制static变量。事实上,该类所有的实例共享一个static变量。
改变变量会影响该类的所有对象(即影响整个类),而不仅是一个特定的实例。
由于所有对象共享该变量,所以该变量用类名访问,而不是用对象的引用访问。
static变量应用于整个类。
(2)静态方法
声明为static的方法本质上是全局方法。它们独立于任何对象。实际上,static方法通过类名调用。
静态方法在创建执行有用的功能且不与任何对象有关的公用方法时特别。在标准Math类中可以找到一些例子。Math类定义了许多static方法来执行各种各样的数学计算,如cos()、sin()、abs()等。
声明为static的方法有一些限制。
1.只能调用其他static方法;
2.只能访问static数据;
3.没有static引用。
(3)静态代码块
有时,类需要在创建对象前执行一些初始化工作。为了解决这种状况,java允许创建static代码块。在首次载入这个类时,执行static代码块,在该类用于其他任何用途前执行