TestEqual.java


public class TestEqual
{
   public static void main (String[] args)  {
      // Long and Integer classes has overided the equals method
      Long l1 = new Long(7);
      Long l2 = new Long(7);
         	   
      if (l1 == l2) 
         System.out.println("l1 == l2");
      else
         System.out.println("l1 != l2"); // display
                  
      if (l1.equals(l2))
         System.out.println("l1.equals(l2)"); // display
      else
         System.out.println("NOT l1.equals(l2)");
                  
      Integer i = new Integer(7);
      
      // Not compilable         
      // Incompatible type for java.lang.Integer
      // cannot convert Integer to Long
      //if (i == l1)
      //   System.out.println("i == l1");
         	   
      // Using the equals method on a diff type always produces 
      // false, regardless of content
      if (i.equals(l1))
         System.out.println("i.equals(l1)");
      else      
         System.out.println("NOT i.equals(l1)");// display
               
      
      // String class has overrided the equals method 
      String s1 = new String("700");
      String s2 = "700";      
      String s3 = "700";
      String s4 = new String("700");
      
      // different object references   	   
      if (s4 == s1) 
         System.out.println("s4 == s1");
      else
         System.out.println("s4 != s1");// display
         	      
      if (s4.equals(s1))
         System.out.println("s4.equals(s1)");// display
      else
         System.out.println("NOT s4.equals(s1)");
       
      // s2 and s3 are actually pointing to the same literal   	   
      if (s3 == s2) 
         System.out.println("s3 == s2");// display
      else
         System.out.println("s3 != s2");
         	      
      if (s1.equals(s2))
         System.out.println("s1.equals(s2)");// display
      else
         System.out.println("NOT s1.equals(s2)");
      
      
      // User defined class extends Objects
      // Override equals methods will make a difference   
      NotOverrideEquals noe1 = new NotOverrideEquals(3);
      NotOverrideEquals noe2 = new NotOverrideEquals(3);
      
      // default implementation is compare the obj reference
      if (noe1.equals(noe2))
         System.out.println("noe1.equals(noe2)");
      else
         System.out.println("NOT noe1.equals(noe2)");// display
      
         
      OverrideEquals oe1 = new OverrideEquals(3);
      OverrideEquals oe2 = new OverrideEquals(3);
      
      // the default behavior is overrided
      if (oe1.equals(oe2))
         System.out.println("oe1.equals(oe2)");       // display
      else
         System.out.println("NOT oe1.equals(oe2)");
   }
}

class NotOverrideEquals {
   int nn;
   NotOverrideEquals(int n) {nn = n;}
}

class OverrideEquals {
   int nn;
   OverrideEquals(int n) {nn = n;}
   
   // override the Object equal method
   public boolean equals(Object obj) {
      if ( !(obj instanceof OverrideEquals) ) 
         return false;
          
      OverrideEquals o = (OverrideEquals)obj;  
      return (nn == o.nn);
   } 
}

Last updated: 12-10-2002
Copyright © 1999 - 2003 Roseanne Zhang, All Rights Reserved
[ Java certification page] [ SCJP FAQ] [ JavaChina]