1.对于java的基本类型,只能用 “==” 来判断值是否相等。
2.对于Java的对象:
2.1 如果用的是“==”,那么是判断的是两个对象的引用地址是否相同。
2.2 如果用的是equals(), 那么分析如下:
1)对于一般的对象都继承与Object,且没有重写equals(),。
没有重写equals()方法的源码:equals与==是等效,比较的是两个对象的引用地址是否相同。
2)String 对象特例,因为重写了equals方法:
为了避免系统中大量产生String对象,于是就设计了一个字符串池(String Pool),它所容纳的但是String对象。
创建机制是这样的:
String 重写的equals()方法:
将此字符串与指定的对象进行比较。当且仅当参数不是null并且是表示与此对象相同的字符序列的String对象时,结果为true。
判断条件:
1.若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。
2.若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。
若长度不相同,则return false
若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。
若当前传入的对象不是String类型,则直接返回false