java源码equals和hashCode
2024-10-14 22:04:09
equals
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
比较两个对象时,首先先去判断两个对象是否具有相同的地址,如果是同一个对象的引用,则直接返回true;
如果地址不一样,则证明不是引用同一个对象,接下来就是挨个去比较两个字符串对象的内容是否一致,完全相等返回true,否则false。
hashCode
/** The value is used for character storage. */
private final char value[];
private int hash;// Default to 0
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value; for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
hashcode方法返回该对象的哈希码值。
如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。
最新文章
- JSONResult 封装
- overflow:hidden清楚浮动的影响
- ADF_Desktop Integration系列4_ADF桌面集成入门之部署ADF Desktop Excel
- Action类为何要继承ActionSupport
- 一篇不错的讲解Java异常的文章(转载)原作者已没法考证
- ubuntu搭建lnmp
- Linux第七节随笔-下磁盘管理
- LGTB 与序列
- iPhoneX理发指南
- vue项目tips
- python学习日记(2/3区别,环境,变量,数据类型以及简单习题)
- 安全测试之Top 10 漏洞的分析
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集之安装Tomcat+Nginx反向代理Tomcat集群】
- 6 关于plsql中文显示乱码问题
- Python全栈之路----常用模块----random模块
- Linux内核分析第二周:操作系统是如何工作的
- sencha touch 百度地图扩展(2014-12-17)
- Sql Server中日期时间格式化为字符串输出
- 多线程系列(3)任务Task
- C#基础第一天-作业答案
热门文章
- C# 之 Socket 简单入门示例
- jni c++
- C#版 - HDUoj 5391 - Zball in Tina Town(素数) - 题解
- 带着萌新看springboot源码09(springboot+JdbcTemplate)
- Java序列化和反序列化,你该知道得更多
- Java开发知识之JAVA的反射
- python迭代和解析(3):range、map、zip、filter和reduce函数
- VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——SliderView控件的使用方式
- ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
- BootStrap之 提示工具(Tooltip)插件