Java 为什么要使类不可变?
可能重复:Java 为什么要使类不可变?,java,Java,可能重复: 有谁能给我举一个在java中实际使用不可变类的例子吗? 真正的目的是什么?例如,为什么字符串是不可变的一个不可变的类是不可变的,这样任何对该对象具有现有引用的对象都不会弄乱,而这些引用依赖于对象内部保持不变的信息。在某些情况下,它对效率有轻微的影响,但取舍是可靠性和稳定性。它基本上意味着为所使用的每个方法创建一个新对象。不可变类是不可变的,因此任何对该对象具有现有引用的对象都不会弄乱,这依赖于对象内部的信息保持不变。在某些情况下,它对效率有轻微的影响,但取舍是可靠性和稳定性。它基本
有谁能给我举一个在java中实际使用不可变类的例子吗?
真正的目的是什么?例如,为什么字符串是不可变的一个不可变的类是不可变的,这样任何对该对象具有现有引用的对象都不会弄乱,而这些引用依赖于对象内部保持不变的信息。在某些情况下,它对效率有轻微的影响,但取舍是可靠性和稳定性。它基本上意味着为所使用的每个方法创建一个新对象。不可变类是不可变的,因此任何对该对象具有现有引用的对象都不会弄乱,这依赖于对象内部的信息保持不变。在某些情况下,它对效率有轻微的影响,但取舍是可靠性和稳定性。它基本上意味着为使用的每个方法创建一个新对象。一个原因是不可变类是线程安全的。一个原因是不可变类是线程安全的。因为正确管理共享的可变状态很困难(有时效率很低)。如果
String
不是不可变的,那么每个方法都必须是线程安全的,并允许字符串的内容发生更改。在这种情况下,不可变意味着不需要锁定,因为您可以对字符串执行的唯一操作就是读取它
这是函数式编程语言的主要优点之一;所有状态都是不可变的(即不允许破坏性更新)。因为很难(有时效率低下)正确管理共享的可变状态。如果String
不是不可变的,那么每个方法都必须是线程安全的,并允许字符串的内容发生更改。在这种情况下,不可变意味着不需要锁定,因为您可以对字符串执行的唯一操作就是读取它
这是函数式编程语言的主要优点之一;其中所有状态都是不可变的(即不允许破坏性更新)。因为Java中没有
const
。爱当有人写时-astring.replace(str1,str2)而不使用结果:)因为Java中没有const
。爱当有人写时-astring.replace(str1,str2)而不使用结果:)