最终数据类型的最终属性?

时间:2013-09-30 04:48:09

标签: java static final

当我宣布以下内容时会发生什么:

public static final String forma = "Rectangular";

这不是多余的吗?作为String的最后一堂课,如果不将 forma 设为最终版,会有什么变化?对于static,我认为它没有做任何改变。

5 个答案:

答案 0 :(得分:3)

final确保引用未分配给新值。

如果你没有final,那么将一些其他值分配给forma(或)你可以对Rectangular进行一些操作并将结果分配回{ {1}}

答案 1 :(得分:1)

对于object-types'final'修饰符意味着不能更改对象的REFERENCE,而不是它的值!

答案 2 :(得分:1)

请参阅字符串是最终类最终关键字使引用最终不是对象最终。
最终对象意味着它不能被改变,但是最终引用意味着在第一次分配后它不能被分配给另一个对象。

最终意味着你无法修改对象String s="hello""hello"是字符串对象而且无法修改,但如果它是非最终引用我会做s例如:s=s.concat("bing")然后,"hello"可以与"bing"对象连接,然后分配给s表示"hello" and "bing"对象未被修改,他们丢失了引用和非最终引用s现在指的是新对象"hellobing"
如果你觉得这很有趣,我肯定想帮你更多。

答案 3 :(得分:0)

  

这不是多余的吗?

不,这不是多余的。它是不变的。该陈述的每个关键词都有意义。 final不可变static设为类变量public使其全局可访问

答案 4 :(得分:0)

final关键字严重超载,在不同的上下文中意味着非常不同的事情:

  • 在字段和局部变量上,表示无法更改引用的内容。 (这与不变性不同。)
  • 在类上,它表示该类不能被子类化。
  • 在方法上,它表示无法在子类中重写该方法。