But when 2 strings are not equal, == gives the "false" answer immediately,
while equals() still tries other things.
(Think about "aaaaaaaaaaaaaaaaaaaaaaaaaa" and "aaaaaaaaaaaaaaaaaaaaaaaaab",
same length and differ at the last point).

Sandy Gao
Software Developer, IBM Canada
(1-905) 413-3255
[EMAIL PROTECTED]


[EMAIL PROTECTED] wrote on 07/09/2004 12:36:07 PM:

> Ok,
>
>     Seems like a silly design choice as String.equals does this
>
>    public boolean equals(Object anObject) {
>    if (this == anObject) {
>        return true;
>    }
>
>         ....
>         ....
>
>
>
> There are over 30 String comparisons using == throughout the code, btw.
>
> But thanks for clearing that up.
>
>
> Quoting Michael Glavassevich <[EMAIL PROTECTED]>:
>
> > Hello Dave,
> >
> > If you've been looking through the source code you'll notice that in
many
> > places we compare strings by reference instead of calling equals. For
> > performance reasons Xerces keeps a table of unique strings for XML
names
> > (elements, attributes, entities, etc...) and namespace names (URIs).
These
> > strings have all been internalized (by calling String.intern()) so
unique
> > references for names and namespace names are passed through the
parser's
> > components. Methods which are part of the public API cannot take
advantage
> > of this because a user may pass a reference to some other string
object,
> > however this method is not part of the DOM API. I did a search for
> > references to this method using Eclipse and it seems that it's not
being
> > called anywhere.
> >
> > Thanks.
> >
> > "Dave Brosius" <[EMAIL PROTECTED]> wrote on 07/07/2004 10:29:47 PM:
> >
> > > I ran across this in org.apache.xerces.dom.DeferredDocumentImpl
> > >
> > > Shouldn't this be
> > >
> > >             if (getChunkValue(fNodeName, achunk, aindex).equals(
name))
> > {
> > >
> > > ?
> > >
> > >
> > >     public String getAttribute(int elemIndex, String name) {
> > >         if (elemIndex == -1 || name == null) {
> > >             return null;
> > >         }
> > >         int echunk = elemIndex >> CHUNK_SHIFT;
> > >         int eindex = elemIndex & CHUNK_MASK;
> > >         int attrIndex = getChunkIndex(fNodeExtra, echunk, eindex);
> > >         while (attrIndex != -1) {
> > >             int achunk = attrIndex >> CHUNK_SHIFT;
> > >             int aindex = attrIndex & CHUNK_MASK;
> > >             if (getChunkValue(fNodeName, achunk, aindex) == name) {
> > >                 return getChunkValue(fNodeValue, achunk, aindex);
> > >             }
> > >             attrIndex = getChunkIndex(fNodePrevSib, achunk, aindex);
> > >         }
> > >         return null;
> > >     }
> >
> > Michael Glavassevich
> > XML Parser Development
> > IBM Toronto Lab
> > E-mail: [EMAIL PROTECTED]
> > E-mail: [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to