String interning (WAS: SAX2/Java: Towards a final form)

David Brownell david-b at pacbell.net
Thu Jan 13 20:36:09 GMT 2000


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?

That's a conclusion you could draw.  I suppose that in some
cases a compiler might optimize

	String	foo = ...;
	boolean b = foo.equals ("literal");

so that the assignment to "b" doesn't invoke equals(), and
just uses "==", but not only would that be more aggressive
than I think most of them are, but then "equals" isn't going
to be invoked so the question is moot!

Literals are already interned.  It's in the language spec.
Look at the javadoc for java.lang.String.intern () ...

- Dave

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at 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.





More information about the Xml-dev mailing list