java的变量不能直接获取真实的地址,只能使用System.out.println(obj.hashcode())输出的时对象的哈希码,而非内存地址。在Java中是不可能得到对象真正的内存地址的,因为Java中堆是由JVM管理的不能直接操作。只能说此时打印出的Hash码表示了该对象在JAVA虚拟机中的内存位置,Java虚拟机会根据该hash码最终在真正的的堆空间中给该对象分配一个地址.
System.out.println(str.getClass()+"@"+str.hashCode());