使用static变量使由同一个类构建的对象有效地共享相同的字段。即使static变量将在某些情况下有帮助(比如:计数器),但是在大多数情况下他们是要避免的。
在计数器中使用static:
static int counter=0;
public void increment(){counter++;}
首先,他们打破了对象封装规则。static字段作为全局变量,与一个类而不是一个对象联系。
static变量有一个生命周期与整个程序的运行时间相匹配,对内存管理不利。这个状态不得不通过安装启用和复杂的GC(对象回收机制)来进行特殊的传递。
public class MyObjectP{
static String TEXT="Enki";
}
//在创建任何MyObject对象前文本框会占用内存
为了确保一个简单的拷贝一个值,单例模型是更好的做法。另外,static变量对于安全、 重载和并发性不利。
但记住static常量却被认为是比较好的做法。