首页 > 其他 > 详细

== 和 equals 的区别

时间:2020-08-13 12:22:48      阅读:58      评论:0      收藏:0      [点我收藏+]

== 和?equals?的区别

==?对于基本数据类型来说,是用于比较
“值”是否相等的;而对于引用类型来说,是用于比较引用地址是否相同的。

查看源码我们可以知道 Object 中也有?equals()? 方法,源码如下:

public?boolean?equals(Object?obj)?{

????return?(this?==?obj);

}

可以看出,Object?中的?equals()?方法其实就是 ==,而?String?重写了 equals()
方法把它修改成比较两个字符串的值是否相等。

源码如下:

public?boolean?equals(Object?anObject)?{

????//?对象引用相同直接返回?true

????if?(this?==?anObject)?{

????????return?true;

????}

????//?判断需要对比的值是否为?String?类型,如果不是则直接返回?false

????if?(anObject?instanceof?String)?{

????????String?anotherString?=?(String)anObject;

????????int?n?=?value.length;

????????if?(n?==?anotherString.value.length)?{

????????????//?把两个字符串都转换为?char?数组对比

????????????char?v1[]?=?value;

????????????char?v2[]?=?anotherString.value;

????????????int?i?=?0;

????????????//?循环比对两个字符串的每一个字符

????????????while?(n--?!=?0)?{

????????????????//?如果其中有一个字符不相等就?true?false,否则继续对比

????????????????if?(v1[i]?!=?v2[i])

????????????????????return?false;

????????????????i++;

????????????}

????????????return?true;

????????}

????}

????return?false;

}

== 和 equals 的区别

原文:https://www.cnblogs.com/xiaodou00/p/13495206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!