OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

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

[ 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.






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS