本帖最后由 cz2861856 于 2012-10-25 16:37 编辑
如楼上几位所说,==比较的是内存地址值,其实equals也是一样对。给你举个例子
int a=1;
int b=1;
boolean boo=(a==b) //true
String str1="abc";
String abc2=new String("abc");
boolean boo2=(str1==str2) //false 比较的是内存地址值
boolean boo3=(str.equals(str2))//true String复写了Object的equals方法,只比较字符串所以等。
String st1="qwe";
String st2="qwe";
boolean b=(st1==st2); //这时是相等的,为true,因为当创建st1的时候,qwe会进入常量池,在建立时,为了节省空间,会在常量池中查找qwe是否存在
//就将内存的对象赋值给他,也就是st1给了st2所以true
一般在编写时,我觉得如果是基本数据类型就用==,如果是引用数据类型就equals,如果有特殊要求,就复写equals |