Win a copy of Five Lines of Code this week in the OO, Patterns, UML and Refactoring forum!
  • 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 all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Bear Bibeault
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
Sheriffs:
  • Tim Cooke
  • Liutauras Vilda
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • fred rosenberger
  • salvin francis
Bartenders:
  • Piet Souris
  • Frits Walraven
  • Carey Brown

equals and == operator

 
Ranch Hand
Posts: 52
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi
i came across this question in Poddar site .it is kind of confusing that both the == and equals operator return a false value.could anyone explain me why it is happening.the question is :
StringBuffer sb1 = new StringBuffer("Amit");
StringBuffer sb2= new StringBuffer("Amit");
String ss1 = "Amit";
System.out.println(sb1==sb2);
System.out.println(sb1.equals(sb2));
System.out.println(sb1.equals(ss1));
System.out.println("Poddar".substring(3));
 
Ranch Hand
Posts: 3244
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by lakshmi panda:
hi
it is kind of confusing that both the == and equals operator return a false value.could anyone explain me why it is happening.the question is :
StringBuffer sb1 = new StringBuffer("Amit");
StringBuffer sb2= new StringBuffer("Amit");
String ss1 = "Amit";
System.out.println(sb1==sb2);
System.out.println(sb1.equals(sb2));
System.out.println(sb1.equals(ss1);


Lakshmi
The == checks to see if two variables hod the same reference to an object. In your case the two StringBuffers are different objects have the same value - 'Amit'. Becasue they are different objects the == returns false.
The equals method for StringBuffer is inherited from Object and all it does is an == comparison so it returns false also.
The third comparison you have
sb1.equals(ss1) will also return false because the first thing it does is check to make sure the variables are of the same type. In this case they aren't so it returns false.

hope that helps
Dave
 
lp
Ranch Hand
Posts: 52
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi
thanks for clearing my doubt .i have one more doubt .what does the equals operator do incase of strings .
 
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In case of strings equals does the following-


Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.


 
Ranch Hand
Posts: 48
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In case of strings the equals() method checks the contents of two objects.
 
mister krabs
Posts: 13974
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
but the == does an object compare so that the two Strings are equal if and only if they reference the same object.
 
lp
Ranch Hand
Posts: 52
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank u all my doubt is now clear .
 
Greenhorn
Posts: 16
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Hi Laxmi,
From Java API�s Object class description�
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).
As (sb1= = sb2) returns false, sb1.equals(sb2) also returns false.which is also applicable to sb1&ss1.

 
Consider Paul's rocket mass heater.
    Bookmark Topic Watch Topic
  • New Topic