【发布时间】:2011-10-07 16:27:45
【问题描述】:
我刚开始阅读这本书Eloquent Ruby,我已经读到了关于Ruby 中的符号的章节。
Ruby 中的字符串是可变的,这意味着每个字符串都会分配内存,因为内容可以更改,即使内容相同。如果我需要 Java 中的可变字符串,我会使用 StringBuffer。然而,由于常规 Java 字符串是不可变的,因此一个字符串对象可以被多个引用共享。因此,如果我有两个内容为“Hello World”的常规字符串,则两个引用都指向同一个对象。
那么,Ruby 中 Symbols 的用途实际上与 Java 中的“普通”String 对象相同吗?它是给程序员优化内存的功能吗?
我在这里写的东西是真的吗?还是我误解了符号的概念?
【问题讨论】:
-
不同(或相等)的字符串可以共享相同的
char[],但不是必须的。此外,String 变量可以指向 Java 中相同或不同的对象。最后一点对可变对象和不可变对象一样有效。