本帖最后由 施大勇 于 2013-7-25 14:40 编辑
首先要明确一下静态static 的特点。
1,凡是static 声明的类成员在类加载时就有了自己的内存,static 声明的字段在静态数据区,static 声明的方法在静态代码区,它们不以对象的存在而存在,类只要一加载到内存中它们就已经存在,而非静态只有创建对象时才会在堆内存中开辟空间。
2,静态声明的成员是所有对象共有的,都可以由类名直接调用。
3,静态字段可以用来计数,比如生成了多少个对象,所有对象都共有的东东才会声明为静态的。
4,对于版主的这个问题 :比如一个类只会生成一个实例,那么他的所有变量都可以使用静态变量么?
我认为若一个类只产生一个对象,那么这里一定会采用构造 方法私有化,并对外提供一个方法,通常取名为getInstace()返回类的实例,产生几个对象与类中的变量是否要使用静态没有什么直接联系。关键还是要看你想让这个变量暴露出去与否?
5,静态变量具有更加广阔的适用性。而且也不会占据更多的空间。是否会给程序带来一些其他的损耗?
非静态的成员一般随着对象的不在使用就会将内存释放,而静态成员的生命周期要长很多,它不会随着某一个对象消亡而消亡,是与类共存亡的。不过对于现在的电脑而言,多几个静态成员对内存的占用可以略不计。
|