文章预览
嗨,我是鸭哥。 今天看到一个面试题:Java中String类为什么要设计成不可变的? 作为一个写代码多年的老程序员,我时不时也会被问到这个问题 所以今天我们就来聊一聊, 为什么 java中String类要设计成不可变的。 首先,从语义上来说,String作为一个值对象(Value Object),它的主要作用是保存和传递字符数据。使用String时,大家通常只关心字符串的内容,而不是这个字符串对象本身的身份。 换句话说,大家关心的是 “这个字符串的值是什么” ,而不是“这是哪个字符串对象”。因此,把String设计成不可变的,使得它更贴近其值对象的本质。 其次,Java的设计者们选择不可变性还有一个非常重要的原因—— 线程安全性。 在多线程环境中,不可变对象天生就是线程安全的,因为它们的状态在创建之后就不会改变。 这意味着我们可以安全地在多个线程
………………………………