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

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的编译不会错运行也不会错,但是会浪费内存。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值