A a = new A();如下代码:A b=a;就是将类型为A的一个对象的应用复制给变量ba,b都是指向同一个对象,通过那个变量修改对象的值,另外一个变量的值也会变化。因为他们的指向都是一块内存的地址
没有方法,因为名字是你自己定的,编译器又怎么知道呢?如果你想区别a和b,最好的方法是改造A这个类,使用不同的参数进行初始化(在new A()时使用参数)否则,在系统本身看来,a,b就是两个4字节的"指针"罢了。