/******************************************************************************
 * Obtain the reference of a String object
 * For Strings, every time you make a change, a new object is created
 * When making changes to Strings -> must re-assign 
 ******************************************************************************/

public class stringRef
{
    public static void main (String[] args) 
    {
        String name = "sam";
        System.out.printf("String name=%s \t is at reference: %x \n", name, System.identityHashCode(name) );

        System.out.println(">> Making a change...");

        name = "john";
        System.out.printf("String name=%s \t is at reference: %x \n", name, System.identityHashCode(name) );

        System.out.println(">> Attempting to uppercase...");

        name.toUpperCase();
        System.out.printf("String name=%s \t is at reference: %x \n", name, System.identityHashCode(name) );
       
        name = name.toUpperCase();
        System.out.printf("String name=%s \t is at reference: %x \n", name, System.identityHashCode(name) );
    }
}