1、String str1=new String("apple");
     String str2=new String("apple");
现在有两个Boolean型表达式:
①str1==str2;
②str1.equals(str2);
2/4
2、上述例子的正确值是
①false
②true
3/4
3、结果解析:
  ==比较的是两个对象的地址
  equals比较的是两个对象的内容
4/4
4
   如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
     boolean equals(Object  o){
     return  this==o;
}
     这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
注意事项
注意,我们平常使用的字符串的比较都是使用equals进行的

解决方案 »

  1.   

    “==”:判断对象是否一样;“equals”:判断对象堆内存存储的值是否一样。
      

  2.   


    因为你少了一个,不仅要重写equals,还要重写hashcode
      

  3.   

    划重点:equals方法是Object的方法,未重写前,与==的作用是相同的,均是比较对象之间的内存地址。理解不了的,请查看String源码。String类中重写了equals方法!
      

  4.   

    == 判断值是否相等(对于普通变量好理解,对于对象来说,也是比较对象所指向的地址的值是否相等).字符串而言,另一种直接赋值而不是new两个apple。==返回true,String有常量池一说,可研究一下。equal:若是比较集合类等,还有必要重写hashcode()方法。
      

  5.   

    说实话,如果你是eclipse的话,直接按F3查看eclipse源码  那看的更明白