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

Reply via email to