最近正好也整理了他们的区别:
1.==有两种用法:第一,用在八种基本类型中时,是判断两个变量的值是否相等,相同时则返回true,不同时则返回false.第二,当用在引用类型中时,它并非是判断两个对象的内容是否相等,而是判断两个对象所指向的内存地址是否相同,相同时则返回true,不同时则返回false.
2.equals只能用在引用类型中,不能用在基本类型中,因为equals是方法,基本类型没有equals方法,equals比较的是对象所指向的内容是否相同,相同,则返回true,不同则返回false
3.equals是方法,而==是运算符,当一个类没有重写equals方法时,默认的是object中的equals方法,而Object中的equals方法其实就是用==来判断的。
关于他们的区别,个人到目前为止遇到的最多的还是String类对象的比较上。(Stirng 重写了 object类的equals方法)API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的,你可以看源码。
|