小编典典

java中的immutable和final有什么区别?

java

最近有人问我这个问题。但是无法简明地解释究竟是什么将这两个概念区分开来。

例如

最终且不可变:

final String name = "John";

如果我现在写

name = "Sam";

我会收到编译器错误

不可变:

String name = "John";
name = "Sam";

有用。

我认为这解释了它在应用中的一部分。但是我可以对这两个话题得到一个很好的,易于理解的解释吗?


阅读 484

收藏
2020-12-03

共1个答案

小编典典

final意味着您不能将对象的引用更改 为指向另一个引用或另一个对象 ,但仍可以更改其状态(例如使用setter方法)。凡 不变
意味着对象的 实际值 不能改变,但你可以改变它的引用到另一个。

关于问题的第二部分(不变性部分),编译器将创建一个String值为“ Sam” 的新对象,并将其指向该对象name

2020-12-03