Object类中的hashCode方法打印出的结果是根据对象的物理地址得到的一个逻辑地址码,那么,为何每次打印的结果都一样呢?见下面的代码:public class T {
int a;
int b; public static void main(String[] args) {
T t = new T();
System.out.println(t);
}
}在我的机器上每次都是打印T@a90653。而同样的,下面的代码:public class T {
int a;
int b; public static void main(String[] args) {
for(int i=0;i<10;i++){
T t = new T();
System.out.println(t);
}
}
}每次打印的结果都是:
T@a90653
T@de6ced
T@c17164
T@1fb8ee3
T@61de33
T@14318bb
T@ca0b6
T@10b30a7
T@1a758cb
T@1b67f74
而且,在不同的计算机上结果仍是如此。请高手给解释一下。

解决方案 »

  1.   

    开始分配的地址还没有被释放---关注一下java的垃圾器运行机制
      

  2.   


    public class T {
        int a;
        int b;    public static void main(String[] args) {
            for(int i=0;i<10;i++){
                T t = new T();
                Runtime.getRuntime().gc();
                System.out.println(t);
            }
        }
    }恩,这样就不一样了