static关键字
在正常情况下,只有通过组合类的对象才能访问该类的成员。有时可能希望定义能够独立于类的所有对象进行使用的成员。为了创建这种成员,需要在成员声明的前面使用关键字static。例如Math类中的方法,就是静态方法。
方法和变量都可以声明为静态的。main()方法是最常见的静态成员的例子。main()方法被声明为静态的,因为需要在创建所有对象之前调用该方法。
静态变量:
特别注意:
(1)被声明为静态的变量本质上是全局变量,类的所有实例共享相同的静态变量。因此,通过一个对象修改静态变量的值后,通过该类的其他对象访问到的静态变量是修改后的值。
(2)访问静态变量的方式:
类名.变量名(推荐)
对象.变量名(不推荐)
(3)初始化时机
静态变量:当类被虚拟机加载,静态变量就初始化,既不需要创建类的对象就可以使用静态变量。
实例变量:创建类的对象时初始化
静态代码块
静态代码块,只执行一次,而且是类加载时就执行
作用:一般完成静态变量初始化赋值或完成整个系统只执行一次的任务
静态方法
最典型的静态方法是main()方法;
静态的方法有几个限制:
l 它们只能直接调用其他静态方法。
l 它们只能直接访问静态数据
它们不能以任何方式引用this或super关键字
关于static的几点说明
1、static的本质作用是区分成员属于类还是属于实例。
2、通常把使用static修饰的变量和方法称为类变量和类方法,有时也称为静态变量和静态方法,把不使用static修饰的变量和方法称为实例变量和实例方法。
3、对于使用static修饰的成员,既可以通过类来调用也可以通过类的实例调用,但是建议使用类调用静态成员。对于实例变量和实例方法,则只能通过类的实例调用。