浏览 1376 次
精华帖 (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的编译不会错运行也不会错,但是会浪费内存。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |