• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • paul wheaton
  • Ron McLeod
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Liutauras Vilda
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Carey Brown
  • Piet Souris
Bartenders:

in what condition the equls to compare whether the two are the same object?

 
Ranch Hand
Posts: 77
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The method equals of String override that method of in Object ,so it is design to compare to see whether the value of the two string have the same value.But in the StringBuffer there's not the equals method ,that means if use the method in Object,which only compare to see if the two object are the same.
I try my conclusion above ,but according the StringBuffer,it is not the true,so I am confused,
could sb tell me that ,in what condition the equals is only to compare the value of the objec ,but not to compare for a result whether the two object are the same object.
 
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,
the equals() method is overridden in all the wrapper classes and the String class in java.lang package.
equals() method in StringBuffer class behaves normally (as it does with anyother class)
see the following declaration,
StringBuffer sb1= new StringBuffer();
StingBuffer sb2= new StringBuffer();
using new operator allocates memory space for the variable on the heap,and hence these two variables (sb1, sb2) have two different references on the heap.

now sb1.equals(sb2) returns false.
and if the statement
sb1=sb2;
preceeds the check sb1.equals(sb2) then it returns true.
Hope this has helped your understanding, otherwise mail back.


 
Greenhorn
Posts: 6
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The equals() method is defined for class StringBuffer, and checks for equivalence of StringBuffer objects. Bear in mind that the following code:
StringBuffer sb = new StringBuffer("test");
System.out.println(sb.equals("test"));
...will print false because the literal "test" is a String object, not a StringBuffer, and therefore not equal, whether it contains the same characters or not. The following code:
StringBuffer sb1 = new StringBuffer("test");
StringBuffer sb2 = new StringBuffer("test");
System.out.println(sb1.equals(sb2));
...will print true.
 
Gong James
Ranch Hand
Posts: 77
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To James Thomson:
StringBuffer sb1 = new StringBuffer("test");
StringBuffer sb2 = new StringBuffer("test");
System.out.println(sb1.equals(sb2));
will print the false not true.

To abdul khayyum:
I think you are right .Thank you.
 
James Thomson
Greenhorn
Posts: 6
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Blimey! You're right! How strange that equals() hasn't been overridden in StringBuffer! Well that's worth knowing, thanks! Guess I was jumping to conclusions.
 
Greenhorn
Posts: 6
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Ok, this has always baffled me, so once and for all. For objects what does == do and what does .equals() do? And could I get an example? Like Object obj1 = new Object(); and Object obj2 = new Object(); What does obj1==obj2 yeild and alternatively what does obj1.equals(obj2) yield? With strings and with wrapper clases, am I correct in saying that the == operator compares references for equality and .equals() compares values for equality? For instance Integer int1 = new Integer(1); and Integer int2 = new Integer(1); then int1==int2 will yield false and int1.equals(int2) will yeild true, correct? This is the same with strings, but StringBuffers are not overriden and so they perform the same way as the object comparison operators, correct? Also, it is obvious that with a String or a wrapper class you can compare a value or a reference, but with objects, it does not seem that there is any value to compare, so does == and .equals() in object just compare reference (meaning they do the exact same thing)? And in StringBuffer, even though there is a value to compare, does it only check reference when using .equals() or ==?
Sorry for the long runon question. I am very appreciative to anyone who can take the time to answer it.
Thanks,
Matt Wheeler
 
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Matt,
== compares object references for reference equality and primitive value for value equality, i.e.
Object o1 = new Object();
Object o2 = new Object();
Object o3 = o1;
o1==o2 yields false;
o1==o3 yields true;
int i1 = 1;
int i2 = 1;
int i3 = 2;
i1==i2 yields true
i1==i3 yields false
Now concerning equals, first of all, equals can only be applied to object references since it is a method. You should always override the equals method in your classes in order to provide a correct equality test for your objects since the equals method in Object just returns the result of an == test. Moreover, only objects of the same class should be compared equal, that is you cannot compare a Long and a Integer for equality.
Long l = new Long(1);
Integer i = new Integer(1);
l.equals(i) or i.equals(l) yields false
HIH
------------------
Valentin Crettaz
Sun Certified Programmer for Java 2 Platform
[This message has been edited by Valentin Crettaz (edited November 20, 2001).]
[This message has been edited by Valentin Crettaz (edited November 20, 2001).]
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic