/* 
 * let Java teach us about object equality
 * @author	Biagioni, Edoardo
 * @assignment	lecture 2
 * @date	January 16, 2008
 * @bugs	none
 */

public class Equals {
    /* some objects to compare */
    /* a and b are the same string, but not the same object */
    static String a = new String ("abc");
    static String b = new String ("abc");
    static String c = new String ("cba");

    /* this main method is invoked when the program is started
     *
     * @param arguments  ignored
     *
     */
    public static void main(String [] arguments) {
	System.out.println ("a = " + a + ", b = " + b + ", c = " + c);
	test();
	System.out.println ("");

	// now set a to refer to the same object as c
	a = c;
	System.out.println ("a = " + a + ", b = " + b + ", c = " + c);
	test();
    }

    /* this method prints whether a equals b or a equals c
     *
     * @param none
     *
     */
    static void test() {
	if (a == b) {
	    System.out.println("a == b");
	} else {
	    System.out.println("a != b");
	}
	if (a.equals (b)) {
	    System.out.println("a.equals(b)");
	} else {
	    System.out.println("! a.equals(b)");
	}
	if (a == c) {
	    System.out.println("a == c");
	} else {
	    System.out.println("a != c");
	}
	if (a.equals (c)) {
	    System.out.println("a.equals(c)");
	} else {
	    System.out.println("! a.equals(c)");
	}
    }
}