File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

String Question

 
mansoor iqbal
Ranch Hand
Posts: 91
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
just when i thought i knew it all:

String str="String";
if("String".toString() == str.toString())
System.out.println("Equal");
else
System.out.println("Not Equal");
prints equal......why???
if("String".replace('g','G') == "String".replace('g','G'))
System.out.println("Equal");
else
System.out.println("Not Equal");
prints not equal.....why?
if("String".replace('t','t') == "String".replace('t','t'))
System.out.println("Equal");
else
System.out.println("Not Equal");
prints equal.....why?
thanks in advance

 
rajashree ghatak
Ranch Hand
Posts: 151
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
in the first piece of code following takes place behind the scene:
String str="String"; //creates a String object.
When u use "String".toString(),no new object is being created,instead String pool is used.So both refer to the same instance of String.Hence == returns Equal.
in the second piece of code:
2 new String objects are creatd that contain the modifications that take place because of replace operation of String.Hence == returns Not Equal.
i am not sure of the third code.
 
lee dalais
Ranch Hand
Posts: 67
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi mansoor
this is what i think:
1.
String str="String"; //gets put into a string pool
str.toString() //returns 'String', but 'String' is already in string pool
"String".toString() // returns 'String', but 'String' is already in string pool
so they both have reference to the same string, so '==' returns true.
2.it seems that with this, both statements
"String".replace('g','G') check the string pool and find that there is no matching string, so they both return different references. so unequal.
if u said ("String".replace('g','G')).intern() to both it would return equal as they would both be put in the string pool but the strings are the same so they would both refer to onw string so same reference.
3.with this, both statements
("String".replace('t','t') check the string pool and find a matching string so they both return the same reference, so equal
[This message has been edited by lee dalais (edited March 30, 2001).]
 
Don't get me started about those stupid light bulbs.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic