[java基础]==、equals和hashCode()
来源:互联网 发布:启辰d60网络怎么开启 编辑:程序博客网 时间:2024/06/07 02:10
1 == 是比较运算符,既可以比较基本数据类型,又可以比较 引用数据类型,基本数据类型比较的是变量值,引用数据类型比较的是地址值,即比较两个对象是否指向同一块存储空间。
2 equals() 是Object类提供的方法,重写之前,equals()继承自Object类,底层实现使用的是“==”,比较的是地址值,但是比较地址值是没有意义的,我们需要重写equals()方法,用以比较属性值。
3 hashCode()也是Object类提供的方法,也可以用来判断两个对象是否相等。Object类的hashCode()返回的是对象在内存中的地址值转换成的int值,所以若hashCode()没有被重写过,任何两个对象的hashCode()值是不相等的。
4 equals() 重写一般需重写hashCode(),原因如下
1) 如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;
2) 如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false) 。
5 注意包装类的equals 方法都是重写过的,所有包装类比较的都是值是否相同。String的hashCode()重写如下:
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()比较的是其基本类型值是否相等。
案例:
String s1 = "1" + "23"; String s2 = new String(s1); String s3= String.valueOf("123"); System.out.print("s1 == s2:"); System.out.println(s1 == s2); System.out.print("s1 == s3:"); System.out.println( s1 == s3); System.out.print("s1 == s3"); System.out.println( s3 == s2); int i0 = 2; Integer i1 = 2; Integer i2 = new Integer(1); System.out.print("i1 == i2:"); System.out.println(i1 == i2); System.out.print("i0 == i2:"); System.out.println(i0 == i2); System.out.print("i0 == i1:"); System.out.println(i0 == i1);
s1 == s2:falses1 == s3:trues1 == s3falsei1 == i2:falsei0 == i2:falsei0 == i1:true
1 0
- [java基础]==、equals和hashCode()
- Java基础复习(一)------equals、==和hashCode
- Java基础 equals()、hashCode()和 == 区别
- Java基础之==号、equals()和hashCode()区别
- Java基础重温(七)java中hashcode()和equals(),equals()与==
- java(15):基础:“==”、equals()和hashCode()的区别
- java hashCode()方法equals()和==
- Java中 hashcode 和 equals、equals和==
- java ==和equals、equals和hashCode的区别
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- java中的==、equals和hashCode以及hashCode生成
- JAVA基础笔记(Java:重写equals()和hashCode())
- Java基础 Java 中 equals 和 hashCode
- ubuntu的wifi掉线之后没法连接
- 文件权限
- LOG 解析方法(代码来自网络)
- 6、判断用户是否中奖(0106)
- string类的实现
- [java基础]==、equals和hashCode()
- 在Bootstrap的modal中使用select2出现不能显示下拉框问题解决办法
- 【redis】——高级应用(2)
- 话说程序员的职业生(IBM软件集团大中华区总架构师 寇卫东)
- 驱动开发之模块
- 使用指针参数
- 【网站高性能 7】----大型网站架构演化知多少(二)
- Apache配置监听多端口
- 晶振相关指标