在上的篇的博客中创建的Circle()方法属于实例方法,里面的变量也是属于实例变量,即实例变量是绑定到类的某个特定的实例的,它不能被同一个类的不同对象共享
。例如,创建一下两个对象:
Circle() circle1 = new Circle();
Circle() circle2 = new Circle(5);
这两个实例的属性是不相关的,它们储存在不同的内存位置,circle1 的变化不会对circle2有影响,反之亦然~
如果想让一个类的所有实例都共享数据,就要使用静态变量,也称之为类变量。静态变该类的一个对象改变了静态变量的值,那么该类的所有对象都会受到影响。要声明一个静态变量或方法,就要在这个变量或方法声明的时候加上修饰符static。Java支持静态方法和静态变量,无需创建类的实例就可以调用静态方法。
类中的常量都是被该类的所有对象共享的,且不能修改的。因此,常量应该声明为final static 。例如:Math类中
的常量定义如下:
final static double PI = 3.1415926535897932846;
实例方法和实例变量都是属于实例的。所以它们在实例创建之后才可以使用。它们是通过应用变量来访问的。静态方法和静态数据可以通过应用变量或者是它们的类名来调用。
下面一个小程序演示如何使用实例变量、静态变量、实例方法和静态方法。
public class Foo {
int i = 5;
static int k = 2;
public static void main(String[] args){
Foo foo = new Foo();
//m1()是实例方法,必须要用实例调用
foo.m1();
int j = foo.i;
}
public void m1(){
//m2()是静态方法,直接用方法名即可调用
i = i + k + m2(i,k);
}
public static int m2(int i,int j){
return (int)(Math.pow(i,j));
}
}