equals:对于字符串来说,equals比较的是俩者的内容是否相同,对于其他的引用来说,equals比较的是俩者是否为同一对象(即地址是否相等) 再提一点:java里面的string有共享池这一概念,即String xx = “”(或者String xx = “xx” + “xx”);时的对象会放到同一个共享池里面,当下一个String xx = “str”时,若共享池里含有与str相同内容的对象时,那么他们实则为同一对象(也就是把共享池的对象拿出来给新来的);
但是String xx = new String();即new出来的对象都会放在堆内存里,是一个全新的对象,所以不管他们的内容是不是相等,他们都不是同一个对象,也就是他们的内存地址一定不相等。 二.
“==”:判断俩者的对象是否相等(即地址是否相等) 三.
instanceof:判断俩者是否为同一类 四.
hashcode:哈希值是按照某个原则来计算的。
所以内容相等的(即equals返回true,或者==的)hashcode值一定相等 当内容不一样时hashcode可能相等也可能不相等,比如:当出现哈希冲突的时候(也就是当内容不一样但是计算出来的hashcode一样的时候,数据结构里面会提到)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)