本帖最后由 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 |