日期:2014-05-20 浏览次数:20724 次
boolean equals(Object obj){ if(this == obj){ ruturn true; } if(this instanceof obj){ 做个类型转换,在比较两者的hashcode 相同 return true; } return false; }
------解决方案--------------------
lz可以拿这段代码试下就知道ls兄弟说的意思了。
public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); if (str1 == str2) { System.out.println("true"); } else { System.out.println("false"); } if (str1.equals(str2)) { System.out.println("true"); } else { System.out.println("false"); } }
------解决方案--------------------
== 比较的是hashCode,即是内存的地址。
后面的比较的是值,因为类String重写了这个方法。
在Object中 这两个都是一样的,都是比较的hashCode.
------解决方案--------------------
楼主理解一下 什么情况下定义出来变量的值是放在栈中的常量池中的 什么情况下定义出来变量的值是放在堆空间中的 常量池与堆空间中的值相比较的时候 什么时候是用"==",什么时候用"equals" 这个问题就迎刃而解了