细节19 减少开销——掌握变量的使用原则
在进行Java程序开发时,需要定义很多变量以完成程序的功能,这些变量包括普通成员变量、静态成员变量以及在方法体或代码块内定义的局部变量,这些变量的使用将直接影响着整个系统的性能,为此,需要了解和掌握这些变量及其使用原则。
1.了解和掌握变量
· 静态成员变量
静态成员变量也称为类变量,使用static关键字修饰,该变量在类加载时,就分配了内存并进行了初始化,并被该类每个实例所共享,只要类被加载了,该变量就会一直驻留在内存中,直到退出程序,才会释放类变量所占用的内存空间。
· 普通成员变量
普通成员变量也称为实例变量,这种变量在创建类的实例时,系统自动为其分配内存和进行初始化,并且只属于该实例,不能被多个实例共享,而且会随着实例的创建而产生,随着实例的销毁而销毁。
· 局部变量
局部变量是指在方法或代码块中定义的变量,该变量在方法被调用或代码块被执行时,才分配内存,并随着方法调用结束或代码块执行结束而释放所占用的内存空间。
2.变量的使用原则
变量的使用主要应考虑以提高系统的性能为原则,所以,在程序中使用变量时应遵循以下原则:
· 尽可能优先使用局部变量
由于局部变量在方法被调用或代码块被执行时才被分配内存空间,并且在方法调用结束或代码块执行结束时,就会释放所占用的内存空间,该变量在内存中驻留的时间最短,而且不需要进行垃圾回收,因此可以大大提高系统的性能。
· 能用实例变量尽量不要用类变量
类变量在类加载时就被分配了内存空间并进行了初始化,而且直到退出程序时才会释放所占用的内存空间,其间一直会驻留在内存中,而实例变量则是在创建类的实例时才被分配内存空间,在实例被销毁时就会被JVM的垃圾回收器回收,释放所占用的内存空间。
说明
使用哪种变量并不是绝对的,例如,某些信息要求被类的多个实例共享,这时类变量就是最佳的选择,即使类变量在程序执行过程中会一直驻留在内存中。