黑马程序员技术交流社区

标题: Java中变量的作用域与生命周期 [打印本页]

作者: 沉湎码海    时间: 2017-2-10 22:37
标题: Java中变量的作用域与生命周期
Java中变量的作用域:


Java把变量的作用域分为两种一种是:

        1.成员变量,另一种是

        2.局部变量。


成员变量是在类的体内定义的变量,根据是否使用static修饰,有细分为:类属性的成员变量和实例属性的成员变量。

类属性的生存期和作用域是:随着这个类的初始化而存在,直到这个类被撤销而结束。

实例属性的生存期和作用域是:随着对象的创建而存在直到对象被撤销而消亡。



局部变量是:在方法体中或在代码块中定义的变量。
        
细分为:   方法局部变量  和   代码块局部变量


方法局部变量的作用域是:自定义之处起,直到该方法结束而终止。

代码块聚不聚变量的作用域是:自定义之处起,直到该代码块的结束而结束。





成员变量和局部变量的初始化的差异:

        当系统加载类或创建该类的实例时,系统会自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。


1.局部变量定义后,必须经过用户显式初始化后才能使用,系统不会为局部变量执行初始化。
        即:定义局部变量后,系统并未为这个变量分配内存空间,直到等到程序为这个变量赋初始值时,系统才会为局部变量
            分配内存,并将初始值保存到这块内存中。


成员变量保存在堆内存中,局部变量保存在栈内存中。

2.与成员变量不同,局部变量不属于任何类或实例,因此它总是保存在其所在的方法的栈内存中。
   栈内存中的变量无须系统垃圾回收,栈内存重的变量往往是随方法或代码块的运行结束而结束的。
  因此,局部变量的作用域是从初始化该变量开始,直到该方法或该代码块运行完成而结束。
   因为局部变量只保存基本数据类型的值或者是保存对象的引用,因此局部变量所占的内存区通常比较小。





作者: xiaoyizi    时间: 2017-2-10 22:41
好,非常好我终于找到了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2