java中的成员变量与局部变量

来源:互联网 发布:主题医院mac中文版 编辑:程序博客网 时间:2024/06/05 02:40

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最符合规范,对于一个循环变量,只需要他在循环体内有效即可。



原创粉丝点击