当前位置: 代码迷 >> J2SE >> == 和 equal解决办法
  详细解决方案

== 和 equal解决办法

热度:237   发布时间:2016-04-24 18:08:56.0
== 和 equal
string str1 = "ABC";
string str2 = "sdf";
str1 == str2;
str1.equal(str2);
上面两行什么区别?


------解决方案--------------------
来晚了,,楼主给点分,,

第一个比地址,第二个比里面的值。
------解决方案--------------------
我罗嗦一点

== 是比较两对象地址
equals 比的是内容 比内容的根据是比较两者hashCode() 那么lz首先要搞清楚hashcode是什么
equals方法的大致思路
Java code
boolean equals(Object obj){    if(this == obj){         ruturn true;     }     if(this instanceof obj){          做个类型转换,在比较两者的hashcode         相同 return true;     }      return false;}
------解决方案--------------------
lz可以拿这段代码试下就知道ls兄弟说的意思了。
Java code
    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" 这个问题就迎刃而解了
  相关解决方案