Steven Schveighoffer wrote:
[snip]
I thought one of the benefits of having immutable strings is that
substrings were just pointers to slices of the original data in Java and
.NET. So every time I do a substring in Java and .NET, it creates a
copy of the data? That seems very wasteful, especially when the data is
immutable...
Sun's Java implements the String class as below, so that sub-strings can
share their parent's character array. This is, AFAIK, an implementation
detail although I don't know of any implementation that differs.
The downside is that holding a reference to a sub-string will prevent
the parent from being collected and this is not an obvious side-effect
of substring(). Storing longer strings as ropes might be better.
class String
{
char[] value;
int offset;
int count;
}
--
Robin KAY