首页 > Java里为什么要用final关键字额?static为什么要和final一起用额?

Java里为什么要用final关键字额?static为什么要和final一起用额?

想请教各位前辈这个问题,我感觉不用static和final定义的变量也能用啊……


何必downvote?

题主需要先有个基本的认识,然后可以试试把自己的类给别人使用,会发现可以从不同角度进行破坏。

基本的tutor:
https://docs.oracle.com/javase/tutorial/java/IandI/final.html
https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

多加练习后建议读读Effective Java,翻译略有生涩,可以结合英文原版看。


final常量,定义时一般要赋值;
final方法,禁止覆盖;
final类,不能继承该类;
final与static final的区别是:final在一个对象类唯一,static final在多个对象中都唯一;
一个既是static又是final的域只占据一段不能改变的存储空间,只有一份

语言的设计肯定是出于某种好处才这样设的,就像有些代码为什么要重构,为什么要使用设计模式……
楼主或许可以找下《设计模式》、《Effective Java》、《重构》或相关文章看下

另外,遇到问题,多Google下,不要急着提问……


你是对的,当年中国就是靠小米加步枪用了8年打败日本的,不用飞机和大炮。8年哦。


能用和好用是两个概念。
所有的代码都能写到一个类里面,为什么要把代码分成几个类再组合呢?
因为这样漂亮

使用final,更多是出于设计考虑。
别人一看这个关键字,就知道这个成员大概能起到什么作用,更快的明白你程序的架构,这就是“语义”
而自己写代码的时候以及和其他人协作干活的时候,也不会误用了这个量。


首先你要明白static 和 final的作用,才好知道什么时候适合用到他们,或者说不得不用他们。举几个例子。

  1. 你定义一个常量
  2. 定义一个能在该类所有对象中共享的变量。 比如Log
  3. 用静态工厂方法来创建对象
  4. 一些工具类,提供static方法,使用的时候不需要new,方便调用
  5. 一个类的内部定义static内部类,比如Builder模式。
  6. .............................

final可以理解为最终的,如果你不想一个变量在后期被改变那么久用final修饰,比如你的实际身高是不变的。
static的一个好处就是可以通过类名直接访问变量,大部分用在需要在多个方法中共享的时候。
final和static没必要一起来用,看自己的需求,楼主在写代码的时候如果没这个需求你就不要用,当你写的多了有这个需求的时候你就会发现他们的好处。

【热门文章】
【热门文章】