【发布时间】:2015-02-23 02:22:29
【问题描述】:
如果您构建一个对象,例如“Intruder”并将其定义为 final,您仍然可以更改该类定义中非 final 的对象字段(即 Intruder.power = 50;)。 在这种情况下,限制将是关于入侵者的对象引用,而不是内部值。
我的问题是:以字符串为例呢? 如果你创建一个 String 对象,比如 "String s = new String("str"); 有没有办法改变字符串的“str”值? 如果不是,那是为什么呢?难道不改变它的引用就可以改变那个String对象的字面值吗?
谢谢!
【问题讨论】:
-
没有。原因其实非常简单:String 没有任何公共字段,也没有任何方法可以让您更改字符串。 (一种奇特的说法是说它是不可变的)
-
这是因为没有公共方法可以让你改变它的私有属性。