1.定义
成员变量值的是在类范围里定义的变量,局部变量值的是在方法里定义的变量。具体分类如下
1.2成员变量
有关成员变量的说明可以参考本人的另一篇博客《java中的static》中的“staic修饰Field”,这里不再说明。只需知道成员变量存放在堆内存中。
1.2局部变量
定义局部变量后,必须经过初始化才能使用,这是因为定义局部变量后,系统并未为这个局部变量分配内存空间,直到等到程序为这个变量赋初始化值时,系统才会为其分配内存空间,并将初始值保存在这块内存中。与成员变量不同,局部变量不属于任何类或实例,因此他总是保存在所在方法的栈内存中,如果局部变量是基本类型的变量,则直接把这个变量的值保存在对应的内存中,如果局部变量是一个引用类型的变量,则这个变量里存放的是地址,通过地址引用到该变量实际引用的对象或数组。栈内存中的变量无须系统垃圾回收,往往随方法或代码块的结束而结束。
局部变量使用时要注意,应该尽可能缩小局部变量的作用范围,局部变量的作用范围越小,他在内存中存放的时间就越短,程序运行性能就越好。如下面三段代码
代码1:
public class PersonTest {
static int i;
public static void main(String[] args){
for(i = 0;i < 100; i++){
System.out.println(i);
}
}
}
代码2:
public class PersonTest {
public static void main(String[] args){
int i;
for(i = 0;i < 100; i++){
System.out.println(i);
}
}
}
代码3:
public class PersonTest {
public static void main(String[] args){
for(int i = 0;i < 100; i++){
System.out.println(i);
}
}
}
可见,代码3最符合规范,对于一个循环变量,只需要他在循环体内有效即可。