java中有三种容易混淆的变量: 类变量, 实例变量, 局部变量, 如下程序所示:
public
class
var
...
{
static int x = 0 ; //类变量(静态变量)
String y = "case"; //实例变量(成员变量)
public void method() ...{
int z = 0 ; //局部变量
}
}
static int x = 0 ; //类变量(静态变量)
String y = "case"; //实例变量(成员变量)
public void method() ...{
int z = 0 ; //局部变量
}
}
类变量的定义前加有static,这表示它是一个静态的,因此类的多个实例共用一个类变量(即下面介绍的静态变量)!
实例变量定义在类的方法之外, 一般处于类的起始位置,类的每一个实例都独自拥有一份实例变量的备份。
局部变量的有效范围在程序块中,它的生命期仅限于程序块中。
另外还有一种常量的写法,它比类变量写法多了一个final,如下所示:
final static int ALL_CLICKS = 0 ; // 常量
默认情况下属性和方法是属于实例的,例如 Example 类定义了 id 属性和 getId( ) 方法,那么每个Example 实例都有自己的id 属性和getId( ) 方法。但是有种情况你希望属性或方法是和类相关联而不是类实例,也就说不管有多少个类实例,都只有一个公共属性或方法,这样的属性和方法称为静态属性和方法。
比如说,一个班级里的每一个同学是一个实例, 那么这些实例就有一个共同的属性,(静态属性), 他们都是一个班级的,
所以,这个类中就要有一个静态属性:班级