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 栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。