1、equals和==的区别
知识点举例
== 和 equals 的区别是什么
` == `比较对象比较的是地址,对于Object对象中的`equals` 方法使用的也是 == ,比较的是对象的地址,默认情况下使用对象的equals比较Object中的equals方法,也就是比较地址,如果要实现自己的比较方式需要复写equals 方法。
对于包装类比如:Integer都是复写过equals方法,比较的是int 值。
个人理解例子:
==:是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
equals:是Object的方法,在Object的方法中比较的是所指向的对象的地址值,一般情况下,包装类的equals方法都是重写过的,重写之后比较的是对象的值。
==:只有一个功能(比较地址值)
如果比较的对象没有被包装过,只是基本数据类型的话,比较的就是他们的值;
如果比较的对象是经过包装的(Integer、String等类型的),比较的就是他们的地址值,所以一般==也只用来比较基本数据类型;
也可以这样认为,基本数据类型的对象只要存放了数据之后,他们的地址值都是一个,所以==比较的都是同一个地址值;
equals(方法):有两个功能(比较地址值,比较值)
可以比较值也可以比较地址值,Object的equals方法里面是用的==进行的比较,如果是引用数据类型的话,比较的就是地址值;
如果是Integer等包装类进行比较的话,那么比较的就是他们的值,不是数据类型,因为Integer的equals方法是重写过的,不会直接比较两个地址值,而是比较值;