成员变量包括实例Field(不以static修饰)和类Field(以static修饰)两种。
成员变量无须显示初始化,只要为一个类定义了类Field或实例Field,系统会在这个类的准备阶段
或创建该类的实例时进行默认初始化,成员变量默认初始化时的赋值规则与数组动态初始化时数组元素的
赋值规则完全相同。
局部变量
局部变量根据定义形式的不同,又可以分为如下三种:
1.形参:在定义方法签名时定义的变量,形参的作用域在整个方法内有效。
2.方法局部变量:在方法体内定义的局部变量,他的作用域从定义该变量的地方生效,
到该方法结束时失效。
3.代码块局部变量:在代码块中定义局部变量,这个局部变量的作用域从定义该变量的地方生效,
到该代码块结束时失效。
与成员变量不同的是,局部变量除了形参之外,必须显示初始化。也就是说,必须先给方法局部变量和代码块局
部变量指定初始值,否则不可以访问它们。
变量的几个特点
1,在同一个类里,成员变量的作用范围是整个类内有效,一个类里不能定义两个同名的成员变量,
即使一个是类Field,一个是实例Field也不行;
2,一个方法里不能定义两个同名的方法局部变量,方法局部变量与形参也不能同名;
3,同一个方法中不同代码块局部变量可以同名;
4,如果先定义代码块局部变量,后定义方法局部变量,前面定义的代码块局部变量与
后面定义的方法局部变量也可以同名。
5,Java允许局部变量和成员变量同名,如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,
如果需要在这个方法里引用被覆盖的成员变量,则可使用this(对于实例Field)或类名(对于类Field)
作为调用者来限定访问成员变量。
变量的使用规则
即使在程序中使用局部变量,也应该可能地缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停
留的时间就越短,程序运行性能就越好。因此,能用代码块局部变量的地方,就坚决不要使用方法局部变量。
如果有如下几种情形,则应该考虑使用成员变量。
1.某个变量是用于描述某个类或者某个对象固有的信息,我们可以将它定义为成员变量;如果这个变量
跟类相关的,我们需定义为类成员变量;与实例相关的,我们需定义为实例成员变量。
2.在某个类中需要以一个变量来保存该类或者实例运行时的状态信息
3.如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该使用成员变量来保存