Object.equals和==是不是一样啊,只有两个引用指向相同的时候才为true?

解决方案 »

  1.   

    当然不一样了,==比较的是引用,即内存中的位置是否相等。而equals是比较值是否相等。
    当然有些类已经封装成一样,比如String类
      

  2.   

    我的一点心得,如果不对请指教:
    equals只能比较Object而不能比较int,float等等,==是都可以比较的,当比较的对象为int等时==比较的是两者的值;
    ==用于比较Object时是比较的Object的"引用"是否一样,即比较的双方是否指向同一个Object,也就是是否指向同一个内存地址;
    equals比较的是Object的值,即是两个引用所指向的Object的值是否相等,也就是两个引用指向的不同内存地址内存储的Object是否相等;
    举例如下:A,B表示两个Object的引用,也可以理解为存储Object的内存地址,'张三','李四'代表Object的值,如果A:张三,B:张三,A!=B,用"=="比较为false,用"equals"比较为true
      

  3.   

    另外String类也没有例外的,用"=="比较和"eqauls"比较结果是不一样的,具体的原因是String类的构造方式容易让人误解
      

  4.   

    做比较的时候还是尽量用.equals()吧
    多少能减少些无畏的错误例如使用Object.equals()的时候
    尽量用 "字符串".equals(变量); 的形式 可以减少NullPoint产生的可能
      

  5.   

    还是用.equals()吧
    ==经常出错
    其实我也想知道他们的实质区别
      

  6.   

    不一样,但你可以使用.equals()。
      

  7.   

    equals()是一个方法 比较两个对象的值
    ==是运算符  比较基本类型的值或这是对象引用的地址
      

  8.   

    如果单纯是考虑Object对象的这个equals()方法的话,那它是跟==同样的效果,都是考虑两个对象的引用是否相等的。
    但是有些类是修改了这个继承来的equals()方法的,比如string类的equals就不是跟==一样的效果了,string的equals是比较两个字符串对象的实际内容是不是相等的。如果你创建一个新的类,但是你没有对equals方法作出任何修改,那它都是跟==相等的效果,比较的是对象的引用。