| Author |
String
|
Puja S
Ranch Hand
Joined: Jan 06, 2005
Posts: 51
|
|
Hi, public class Test { public static void main ( String args [ ] ) { if("String".trim() == "String") System.out.println("Equal"); else System.out.println("Not Equal"); } } The output of this code is Equal but when I change the code to public class Test { public static void main ( String args [ ] ) { if(" String ".trim() == "String") System.out.println("Equal"); else System.out.println("Not Equal"); } } Why is this code giving an output of Not Equal . ( In the second code I'm giving spaces in the " String " ) . Thanks.
|
 |
Pradeep bhatt
Ranch Hand
Joined: Feb 27, 2002
Posts: 8876
|
|
|
The 2nd code is creating a new object.
|
Groovy
|
 |
Puja S
Ranch Hand
Joined: Jan 06, 2005
Posts: 51
|
|
There is another code where I'm having doubt : if("String".trim() == "String".trim()) System.out.println("Equal"); else System.out.println("Not Equal"); The output of this code is Equal and when the code is changed to " String ".trim( ) == " String ".trim( ).......the output is Not Equal. Why ?
|
 |
Vipin Das
Ranch Hand
Joined: Jul 05, 2004
Posts: 47
|
|
Hi puja, The new string objects will be returned only if there is anything to trim. If u give without any spaces at the ends, the same string will be returned, and therefore the strings will be equal. But if there are anything to trim a different string will be returned and they will become different objects. To understand this u must be aware of the string pool also. -vipin
|
 |
Puja S
Ranch Hand
Joined: Jan 06, 2005
Posts: 51
|
|
|
Thanks Pradeep and Vipin........I got your point.
|
 |
Jeroen Wenting
Ranch Hand
Joined: Oct 12, 2000
Posts: 5093
|
|
|
in other words: NEVER use == to compare Strings unless you explicitly intend to check whether two reference variables refer to the same memory location rather then whether they refer to memory with the same content.
|
42
|
 |
 |
|
|
subject: String
|
|
|