class A {
    public int x;
    public A(int x) { this.x = x; }
    public String  toString()  { return "x = " + x; }
    public boolean equals(A a) { return x == a.x; }
    public Object  clone()     { return new A(x); }
}

public class ObjectExample {
    public static void main(String[] args) {
        
        A a1 = new A(1);
        A a2 = (A) a1.clone();

        System.out.println(a1);             // x = 1
        System.out.println(a2);             // x = 1
        System.out.println(a1.equals(a2));  // true
        System.out.println(a1.getClass());  // returns class A and prints it
        System.out.println(a1.getClass().getName());  // print name "A"

    }
}