[
Lists Home |
Date Index |
Thread Index
]
- From: Tyler Baker <tyler@infinet.com>
- To: Miles Sabin <msabin@cromwellmedia.co.uk>
- Date: Mon, 17 Jan 2000 16:52:54 -0500
Miles Sabin wrote:
> David Brownell wrote,
> > Miles Sabin wrote,
> > > Except that String.intern() isn't the _only_ way of
> > > making foo.equals(bar) iff foo == bar (in particular
> > > contexts, as opposed to across the whole JVM).
> >
> > It's the only way to ensure it's so if foo is a string
> > literal, as is rather common usage.
>
> I don't follow. You're surely not suggesting that
>
> foo == "literal".intern()
>
> is faster than,
>
> foo.equals("literal")
>
> are you?
In the Java Language Specification all JVM's must intern String literals and String
constants. These object reference of the String literal points to an interned String at
all times so:
if (foo == "literal") {
}
only makes the call to String.intern() (if the JVM chooses to even do that as it might
have a faster way of doing it during class loading), once and not every time you invoke
the method.
Also String constants are interned so you can write code like this:
public static final String CONSTANT = "foo";
Instead of:
public static final String CONSTANT = "foo".intern();
I hope this helps...
Tyler
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ or CD-ROM/ISBN 981-02-3594-1
Please note: New list subscriptions now closed in preparation for transfer to OASIS.
|