论坛首页 入门技术论坛

(十三):public类型的终态的成员变量,一般都要声明为static

浏览 1360 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-28   最后修改:2009-03-03
public class PublicStaticFinalTest {
	public static final String str = "abc";
}

问题:为什么对于一个public类型的终态的成员变量,一般都要声明为static的?
解答:节省内存。分析:final是终态的,既然是终态的我们可以把它当作常量,一但赋值,它的值就不能去做任何的改变,是一个常量。既然是一个常量我们可以认为定义的这个常量的值只能读不能写。既然对于不能改变的量,那么举例说这个类有10对象,既然每个对象都有一个不能改变的常量,相当于这个常量有10份拷贝,分别在10个对象里面。如果加上static有什么好处呢?我们知道static是静态的,就是说不管这个类的对象有多少个,它的static的变量始终就只有那么一个,那么所有的都想都引用这同一个静态变量。某一个对象对它改变后会反应到其他对象里面去。将当前变量定义为static的,那么这个变量在内存里面就只有一份。它既然是只读的,那么在内存里面只有一份,所有对象都用这一份,如果不定义为static的,那么如果一个类有100个对象或者更多,那么在内存里面就有100份甚至更多的拷贝。加上static,在内存里面就只有一份拷贝,一份跟100份相比必然是节省内存了。所以对于一个public类型的终态的成员变量,一般都要声明为static的,如果不定义为static的编译不会错运行也不会错,但是会浪费内存。。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics