在Java语言中,根据定义的位置不同,可以将变量分为两大类:成员变量和局部变量。
成员变量指的是在类里定义的变量。成员变量被分为类变量和实例变量两种,定义成员变量时没有static修饰的就是实例变量,有static修饰的就是类变量。其中类变量从该类的准备阶段开始存在,知道系统完全摧毁这个类。而实例变量则从该类的实例被创建起开始存在,直到系统完全摧毁这个实例。
成员变量无需显示初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化。同一个类的所有实例访问类变量时,实际上访问的是该类本身的一个变量,也就是说,访问了同一片内存区。
与成员变量不同的是,局部变量除了形参之外,都必须显示初始化。在同一个类里,成员变量的作用范围是整个类内有效,一个类里不能定义两个同名的成员变量,即使一个是类变量,一个是实例变量也不行。
一个方法或一个代码块内不能定义两个同名的局部变量。