文档章节

《Effective java》学习笔记 2 之 对于所有对象都通用的方法

厚德
 厚德
发布于 2015/06/17 11:43
字数 421
阅读 12
收藏 0

1.覆盖equals时请遵守通用约定

要覆盖equals就必须遵循以下约定

1 自反性

对于非空对象x x.equals(x)为true。(基本都满足)

2 对称性

对于非空对象x y. 若x.equals(y) 返回true,则y.equals(x) 一定返回true

3 传递性

对于非空对象x y z 。 若 x.equals(y), y.equals(z) 都返回true,则一定有x.equals(z) 返回true

4 一致性

对于不可变对象来说,如果两个对象相等,则永远相等。可变对象就不一定了。设计类是的时候就要考虑到它是否可变,不可变就必须遵循一致性。

5 非空性

对于非空对象x x.equals(null)都必须返回false

2.在覆盖equals时总要覆盖hashCode方法

对于覆盖hashcode也有约定:

1 在应用程序的执行期间,只要对象的equals方法的比较操作作用到的信息没有发生改变,那么对同一个对象多次调用,hashCode返回码必须是同一个整数。

2 如果两个对象根据equals方法比较相等,那么调用这两个对象任意一个对象的hashCode方法都必须产生同样的整数结果。

3 始终要覆盖toString ,toString覆盖起来没有太多的约定。

4 谨慎覆盖clone ,调用clone方法是不会调用构造器的。 其他的没理解清楚,不写了。

5 考虑实现Comparable接口,实现此接口可以在部分集合中完成排序的功能,compareTo也应该有 equals的传递性。


© 著作权归作者所有

共有 人打赏支持
厚德
粉丝 2
博文 53
码字总数 33193
作品 0
武汉
Effective Java 第三版——43.方法引用优于lambda表达式

Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8...

M104
05/22
0
0
通过JDBC进行简单的增删改查(以MySQL为例)

前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4...

Airship
2015/07/13
0
0
Java拾遗:001 - 重写 equals 和 hashCode 方法

重写equals方法 在Java中Object类是一个具体类,但它设计的主要目的是为了扩展,所以它的所有非final方法,都被设计成可覆盖(override)的。但任何一个子类在覆盖这些方法时都应遵守一些通用...

一别丶经年
08/02
0
0
JVM 运行时数据区简介及堆与栈的区别

理解JVM运行时的数据区是Java编程中的进阶部分。我们在开发中都遇到过一个很头疼的问题就是OutOfMemoryError(内存溢出错误),但是如果我们了解JVM的内部实现和其运行时的数据区的工作机制,...

大数据之路
2015/08/02
0
1
有一到五年开发经验的JAVA程序员需要掌握的知识与技能!

JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为什么他们能达到如此...

java高级架构牛人
06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部