How is it possible for two String oblects with identical values not to be equal under the == operator?


Ans:The = = operator compares two objects to determine if they are the same object in memory i.e. present in the same memory location. It is possible for two String objects to have the same value, but located in different areas of memory.
= = compares references while .equals compares contents. The method public boolean equals(Object obj) is provided by the Object class and can be overridden. The default implementation returns true only if the object is compared with itself, which is equivalent to the equality operator = = being used to compare aliases to the object. String, BitSet, Date, and File override the equals() method. For two String objects, value equality means that they contain the same character sequence. For the Wrapper classes, value equality means that the primitive values are equal.
public class EqualsTest {


        public static void main(String[] args) {


                String s1 = “abc”;
                String s2 = s1;
                String s5 = “abc”;
                String s3 = new String(”abc”);
                String s4 = new String(”abc”);
                System.out.println(”== comparison : ” + (s1 == s5));
                System.out.println(”== comparison : ” + (s1 == s2));
                System.out.println(”Using equals method : ” + s1.equals(s2));
                System.out.println(”== comparison : ” + s3 == s4);
                System.out.println(”Using equals method : ” + s3.equals(s4));
        }
}
Output
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true

People who read this post also read :



3 comments:

There is an error on the output of
System.out.println(”== comparison : ” + s3 == s4);

it shoud be "== comparison : false"

Watson, can you read JavaDoc??? You use String(String original) constructor:
String s3 = new String(”abc”);
String s4 = new String(”abc”);

Let's read API documentation of that constructor:

"
String

public String(String original)

Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a copy of the argument string. Unless an explicit copy of original is needed, use of this constructor is unnecessary since Strings are immutable.


Parameters:
original - A String
"

Are there still something you don't understand??

Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here.
Kindly keep blogging. If anyone wants to become a Java developer learn from Java EE Online Training from India.
or learn thru Java EE Online Training from India . Nowadays Java has tons of job opportunities on various vertical industry.

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More