一直对==和equals方法判断相等很模糊。今天又仔细看了下。留个纪念
网上一直有人说
引用
==比较的是内存地址;
equals比较的是内容。
这种说法是不严谨的。
首先我们看下java中object中的源码。因为所以的类都继承了object这个类。那么方法也是了
object.java中的eauqls方法如下:
public boolean equals(Object obj) {
return (this == obj);
}
看完代码发现。在object类中。equals和==是没有任何区别的。都比较的是内存地址。也就是说。都是比较两个引用是否指向同一个对象。是则返回true。否则返回false
那为什么很多人说比较对象呢。因为很多都虽然继承了object类。但是它们很多都重写了equals方法
最典型的就是string类
看string类中的equals方法
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
根据引用取出内容。然后逐个比较。相同返回true。否则false
现在明白了。原来根据类的不同equals方法比较的东西也不尽相同。
再看list的抽象类AbstractList
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;
ListIterator e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while(e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}
同样重写了equals方法。然后迭代判断两个list是否相同。
所以再有人问你==和equals方法的区别。你就不会迷糊了吧。
分享到:
相关推荐
程序中的一个错误是`s2.eauals("+")`,应该是`s2.equals("+")`,这是检查字符串是否相等的正确方法。 6. 用户输入处理:第六个程序`Jiafa`也处理用户输入,但这里的目的是获取两个整数并进行计算。程序尝试读取两个...
4. 重写父类中的eauals()方法和hashcode()方法。 实体类的种类: A. 属性类,通常定义在model层里面。 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。 C. 让程序员在对数据库操作的时候不用写SQL...
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
java java线程小游戏,大鱼吃小鱼,实现了大体的模式,可以给想做小游戏的朋友一点参考.zip
施工人员检测54-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rarPPE_KIT 3-V4 2024-07-25 9:31 AM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括17334张图像。 PPE_KIT-3WE9-WQOV-IEQN-OGMT以可可格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 应用以下扩展来创建每个源图像的3个版本: * -15%至+15%之间的随机BRIGTHNESS调整 * 0到1.1像素之间的随机高斯模糊
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载