java final 变量只读_java final的使用总结

final 变量:是只读的;

final 方法:是不能继承或者重写的。

final 引用:引用不能修改,但是对象本身的属性可以修改;

final class:不可继承;

final MyObject o = new MyObject();

o.setValue("foo"); // Works just fine

o = new MyObject(); // Doesn't work.

虚拟机并不会知道你的变量是否是final的,所以final与内存泄露无关。

final不会让代码速度更快

1.final类

当一个类声明为final类,也就证明这个类是不能够被继承的,即禁止继承,因此final类的成员方法是没有机会被覆盖的,这个final类的功能是完整的。在Java中有很多类是final的,如String、Interger以及其他包装类。

final类的好处:不可变类有很多的好处,它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的开销。

2.final方法

如果一个类不允许其子类覆盖某个方法,即不能被重写,则可以把这个方法声明为final方法。(类中所有的private方法都隐式的指定为final)。

使用final方法的原因:

方法锁定,防止任何继承类修改它的含义,确保在继承中使方法行为保持不变且不被覆盖;

效率,将一个方法指明为final,就是同意编译器将针对该方法的所有调用都转化为内嵌调用(相当于在编译的时候已经静态绑定,不需要在运行时再动态绑定)。

3.final变量

程序中有些数据的恒定不变是很有必要的,比如:

一个永不改变的编译时常量;

一个在运行时被初始化的值,而在程序的后面不希望它被改变。

这种类型的变量只能被赋值一次,一旦被赋值之后,就不能够再更改了。

有几点要注意的:

一个既是static又是final的域只占据一段不能改变的存储空间,一般用大写来表示;

final使数值恒定不变,而当用于对象时,final使引用恒定不变(一旦引用指向一个对象,就无法再把它改为指向另一个对象);

final变量的好处:

提高性能,JVM和Java应用程序都会缓存final变量;

final变量可以在安全的在多线程环境下进行共享,而不需要额外的开销。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值