I am learning Java now. When I use == and .equals() for String comparisons, I am getting different results. But there is no compilation error. Can anyone explain the difference between these two operations?
            Asked
            
        
        
            Active
            
        
            Viewed 241 times
        
    -1
            
            
         
    
    
        Maroun
        
- 94,125
- 30
- 188
- 241
 
    
    
        Anush Guar
        
- 1
- 1
3 Answers
2
            
            
        - s1 == s2compares string references; this is very rarely what you want.
- s1.equals(s2)compares the two character sequences; this is almost always what you want.
 
    
    
        NPE
        
- 486,780
- 108
- 951
- 1,012
1
            == tests for reference equality.
.equals() tests for value equality.
Example:
String fooString1 = new String("Java");
String fooString2 = new String("Java");
// false
fooString1 == fooString2;
// true
fooString1.equals(fooString2);
Note:
== handles null strings values.
.equals() from a null string will cause Null Pointer Exception
 
    
    
        Gokul Nath KP
        
- 15,485
- 24
- 88
- 126
- 
                    Thanks Gokul. This is much useful. – Anush Guar Apr 06 '13 at 15:50
0
            
            
        when == is used for comparision between String then it checks the reference of the objects. But when equals is used it actually checks the contents of the String. So for example
  String a = new String("ab");
  String b = new String("ab");
  if(a==b) ///will return false because both objects are stored on the different locations in memory
   if(a.equals(b)) // will return true because it will check the contents of the String
i hope this helps
 
    
    
        user_CC
        
- 4,686
- 3
- 20
- 15