• 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

String and StringBuffer

 
Ranch Hand
Posts: 51
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For the following code:
public class abc
{
public static void main(String args[])
{
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));
}
}

The answer is false false false and I verified it. Why is it not true true and false? Please explain...

Thanks and Regards
Vineet
 
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For your answer program should be like that:

public class abc
{
public static void main(String args[])
{
StringBuffer sb1 = new StringBuffer("Amit");
StringBuffer sb2 = new StringBuffer("Amit");
String ss1 = "Amit";
System.out.println(sb1.toString().equals(sb2.toString()));
System.out.println(sb1.toString().equals(sb2.toString()));
System.out.println(sb1.equals(ss1));
}
}
 
Greenhorn
Posts: 21
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Vineet,
This is a follow-up from Mahesh's message
System.out.println(sb1==sb2) : false because sb1 and sb2 reference to 2 different objects.
System.out.println(sb1.equals(sb2)): false
System.out.println(sb1.equals(ss1)): false
The 2 lines above are false because StringBuffer doesn't override the equals() methods inherited from the Object class. Calling equals() will only check if they reference the same object or not.
 
Ranch Hand
Posts: 64
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am completely agree with Mahesh and son le. Because using
'==' this operator, we cann't compare two different objects.
In every time it would be two values of the same object.
Here sb1 and sb2 are different objects. So when you will
compare two objects definitely you have to convert your
Objects into Strings using 'toString()' method. Here Mahesh
did it.
Thanks,
Sayeed
 
The first person to drink cow's milk. That started off as a dare from this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic