string - 字符串不可变有什么优势?

标签 string immutability

有一次我研究了由于提高内存性能的原因而使字符串不可变的优点。

有人可以向我解释吗?我无法在互联网上找到它。

最佳答案

不可变性(对于字符串或其他类型)可以具有许多优点:

  • 它使代码推理更加容易,因为您可以对变量和自变量进行假设,而这些假设是您以前无法做到的。
  • 它简化了多线程编程,因为从无法更改的类型读取始终可以安全地并发执行。
  • 通过允许将相同的值组合在一起并从多个位置引用,可以减少内存使用。 Java和C#都执行字符串实习,以减少嵌入代码中的文字字符串的存储成本。
  • 它简化了某些算法(例如采用回溯或值空间分区的算法)的设计和实现,因为先前计算的状态可以在以后重用。
  • 不变性是许多功能编程语言的基本原理-它允许将代码视为从一种表示形式到另一种表示形式的一系列转换,而不是一系列的突变。

  • 不可变的字符串还有助于避免将字符串用作缓冲区的诱惑。 C / C++程序中的许多缺陷与缓冲区溢出问题有关,这些问题是由于使用裸字符数组来编写或修改字符串值而导致的。将字符串视为可变类型会鼓励使用更适合缓冲区操作的类型(请参见.NET或Java中的StringBuilder)。

    关于string - 字符串不可变有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407403/

    相关文章:

    javascript - 从javascript数组获取随机值并将其打印为字符串

    string - 如何在 MongoDB 中将 B.C 之前的日期存储为 ISODate?

    java - 在java中使类不可变

    javascript - CoSTLy 不可变操作

    c++: vector<string> 的迭代

    c++ - 如何应对缓慢的 vector<string> 析构函数?

    python - 属性错误: 'tuple' object has no attribute 'replace' For brackets

    python - Python 中的不变性和线程安全

    javascript - 只需使用 Immutable.js 将对象分配给变量即可克隆新对象

    java - 字符串是不可变的。到底是什么意思?