不可变的字符串和final关键字

Kne*_*tic 0 java string

我通常将全局编译时变量(如我使用的常量,如avogadro的数字或其他)放入公共静态最终变量中.但是,我还没有考虑过这对Strings是否真的有用.因为它已经是不可变的,所以制作一个String final有什么意义吗?

这是一个理论而不是一个实际的问题.

Boz*_*zho 10

final与不可变的不同.final表示处理程序(变量)不能指向另一个对象.不可变意味着对象不能改变其内部状态.

  • static final Foo foo = new Foo(1) 意味着你以后不能拥有 foo = new Foo(2)
  • 如果Foo是不可变的,则意味着一旦创建它,​​就无法更改其字段.你不能拥有Foo foo = new Foo(1); foo.setValue(3);