天天看点

深入理解变量

1、变量的定义:数据类型   变量名   = 值;

2、变量的分类:变量根据在类中定义位置的不同,可以分为两大类:成员变量和局部变量。

3、成员变量分为类成员变量和实例成员变量

     3.1 类成员变量:使用static修饰的成员变量

     3.2 实例成员变量: 没加static修饰的变量就是实例成员变量

     注意:在方法当中 不能定义static变量

     3.3 成员变量的特点:

          3.3.1 成员变量默认是有初始值

          3.3.2 变量初始化之后才会在内存中开辟存储空间

          3.3.3 成员变量在整个类中都有效.

          3.3.4 成员变量,可以先使用后定义

  4、局部变量:变量除了成员变量,其他都是局部变量. 局部变量所处的位置1.  方法内部的变量. 2.  方法的参数 3.  代码块中的变量

           4.1 局部变量的特点:

                 4.1.1 局部变量没有默认的初始值,所以必须先初始化才能使用

                 4.1.2 局部变量只在它定义的大括号内生效

    5、变量的作用域:变量的作用域指的是变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了

   6、变量的生命周期:变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。 作用域不同,生命周期就不一样;变量根据定义的位置不同,也决定了各自的作用域是不同的. 看变量所在的那对{}

变量的生命周期

变量 变量在代码中存放位置 生命周期开始 生命周期结束 内存位置
类变量 字段,使用static修饰,类中,方法外 所在字节码加载到JVM时 当JVM停止时 方法区
实例变量 字段,没有static修饰,类中,方法外 创建所在类对象时 当对象被GC回收时
局部变量 方法参数,方法内,代码块 执行到初始化变量时 所在的方法或代码块执行结束

7、变量使用的注意点:

    7.1 局部变量定义后,必须显示初始化后才能使用,因为系统不会为局部变量执行初始化操作。这就意味着,定义局部变量后,系统并未为这个变量分配内存空间。 直到程序为这个变量赋值时,系统才会为局部变量分配内存,并将初始值保存到该内存中。

   7.2 局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。

   7.3 基本数据局部变量:直接把这个变量的值保存到该变量所对应的内存中。 引用数据局部变量:这个变量内存中存的是地址,通过该地址引用到该变量实际引用堆里的的对象。

    7.4 栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。

继续阅读