---恢复内容开始---
定义变量的语法:
数据类型 变量名=值
-----------------------------------------------------------
变量根据在类中定义位置的不同,分成两大类:
成员变量:全局变量/字段(Field),不要称之为属性(错误)。直接定义在类中,方法外面。
1):类成员变量 使用static修饰的字段。
2):实例成员变量 没有使用static修饰的字段。
局部变量:变量除了成员变量,其他都是局部变量。
1):方法内部的变量。
2):方法的形参。
3):代码块中的变量,一对{}。
class ABC { String info=null;//成员变量 void doWork(String name) { int age;//局部变量 } }
-----------------------------------------
变量的初始值:初始化才会在内存中开辟空间。
成员变量:默认是有初始值的。
局部变量:没有初始值,,所以必须先初始化才能使用。
-------------------------------------------
变量的作用域:
变量根据定义的位置不同,也决定了各自的作用域是不同的。
成员变量:在整个类中都有效
局部变量:从开始定义的位置开始,到紧跟着结束的花括号为止
--------------------------------------------
成员变量,可以先使用后定义,局部变量必须先定义而后才能使用。
---------------------------------------------
存在位置 | 生命周期开始 | 生命周期结束 | 在内存中的位置 | |
类变量 | 字段,使用static修饰 | 为所在字节码被加载进JVM | 当JVM停止 | 方法区 |
实例(成 员)变量 | 字段,没有使用static修饰 | 当创建所在类的对象的时候 | 当该对象被GC回收 | 堆 |
局部变量 | 方法形参,代码块中,方法内 | 当代码执行到初始化变量的时候 | 所在的方法/代码块结束 |
什么时候使用成员变量和局部变量:
1):考虑变量的生存时间,这会影响内存开销。
2):扩大变量作用域,不利于提高程序的高内聚。
开发中应该尽量缩小变量的使用范围,如此在内存中停留时间越短,性能也就越高。
不要动不动就使用static修饰,定义工具方法时static方法需要访问的变量,该变量属于类,此时才使用static修饰字段。
也不要动不动就使用成员变量,因为存在着线程不安全的问题,能使用局部变量尽量使用局部变量。
---恢复内容结束---