本帖最后由 feigecal 于 2012-6-24 09:09 编辑
程序在运行的时候会创建一个字符串缓冲池,当使用 String sr="abc";这样的表达时创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在上面,String st="abc";中st先被放到了池中,所以在sr被创建的时候,程序找到了具有相同值的 st,将 sr 引用 st 所引用的对象"abc"。下面,使用了 new 操作符,他明白的告诉程序:"我要重新创建一个对象"。于是一个新的"abc"Sting对象被创建在内存中。他们的值相同,但是位置不同,只是浪费了资源。==比较的是2个对象的地址,而equals比较的是2个对象的内容,不管是上面还是下面,对象 的内容都是abc所以你的equals()运算都是true。
我也是刚搞清楚,希望帮到你,共同进步,呵呵 |