当我们谈论字符串是可变的时,这是使用“可更改”或“可修改”这个词的同义词还是有一些额外的细微差别来解释为什么使用这个术语而不是像'可修改'这样的简单词? / p>
答案 0 :(得分:7)
我认为“可变”这个词是一个很好的选择。
如果使用“可修改”,则不太清楚。例如,如果您的字符串是堆分配类型,当您说您正在修改“字符串”时,不清楚您是在更改堆上的数据(字符串的内容)还是字符串的堆指针。
然而,“可变”表明字符串的实际数据正在发生变化。我认为这是因为它与变异的根源相同。如果某些东西在变异,它就不会从看A看到B(即:改变一个指针),而是改变自身,或者变成(迭代)原来的东西。
答案 1 :(得分:2)
可变对象是一个可以在创建后修改的对象。所以在某种程度上,它与“可修改”同义。 “可变”一词的意思是“承担责任或可能发生变化或变更”。我认为这听起来比“可修改的”好。
答案 2 :(得分:1)
是的,mutable是一个在创建后能够被更改的对象的术语,而immutable是指一个无法更改的对象。 Mutable的字面意思是“变异的能力”,我认为它与可变对象的行为完全吻合。
答案 3 :(得分:1)
反过来
在编程中,您经常会听到可变和不可变的术语,而不是可修改和不可修改的术语。但是我认为可以说这两种方式具有相同的含义。
但是在罗马时...所以你应该使用可变和不可变的,因为它们是更常用的术语(至少根据我的经验)。
至于为何选择?我问过我的婆婆(她说的是:-)而且从非编程的角度看,“可变”比“可修改的”更短......看起来对我来说似乎已经足够了。
答案 4 :(得分:0)
特别是对于字符串,在可变字符串中,如果将第一个字符从“A”更改为“B”,则仍然在处理内存中的相同字节;其中一个刚刚采取了不同的价值。使用不可变字符串,即在Java中,将在内存中的新位置创建新对象,因为原始对象无法更改。
Mutable是一个很好的词来形容它,它的优点是不会被现实世界的含义或解释所困扰,因为它很难精确地使用。
答案 5 :(得分:0)
既然你没有指出你所说的具体情况(如果这是范围蔓延,请原谅我)......
.NET中的字符串具体是不可变的,不可变的。一旦它们被创建,那就是它。他们从不改变。如果进行了更改尝试,则会创建新字符串,并释放旧字符串以进行垃圾回收。
答案 6 :(得分:0)
以下是使用java作为示例的可变/不可变的非常简单的解释:
<强>可变的强>
StringBuffer api documentation是标准字符串类的可变版本
更改需要重新分配内存的String类的标准值
我从未真正听说过使用“可修改”一词。