hashCode 方法

  • 散列码(hash code)是由对象导出的一个整形值(可以是负数)。其是没有规律的,如果x与y是两个不同的对象,则x.hashCode()与y.hashCode()基本上不会相同。
  • hashCode 方法定义在 Object 类中,因此每个对象都有一个默认的散列码方法,其返回结果是对象的存储地址。
  • 一个例子:
    ```java
    String string1 = "hiwangzi";
    StringBuilder stringBuilder1 = new StringBuilder(string1);
    System.out.println(string1.hashCode() + " " + stringBuilder1.hashCode());

    String string2 = new String("hiwangzi");
    StringBuilder stringBuilder2 = new StringBuilder(string2);
    System.out.println(string2.hashCode() + " " + stringBuilder2.hashCode());
    输出结果:
    -1232882509 1975012498
    -1232882509 1808253012
    ```
    可以看到,String对象的散列码是相同的,这是因为字符串的散列码是由内容导出的;而StringBuffer对象散列码不同,这是因为StringBuffer类没有定义hashCode()方法,它的散列码是由默认的Object类的默认hashCode()方法导出的对象存储地址。

  • 如果重新定义 equals 方法,就必须重新定义 hashCode 方法,以便于可以将对象插入到散列表中。
  • 可以调用 Objects.hash 方法并提供多个参数得到散列码(这种做法比较好):
    java public int hashCode(){ return Objects.hash(name, salary, hireDay); }
  • equals 与 hashCode 定义必须一致,即 x.equals(y) 与 x.hashCode() == y.hashCode() 结果一致。

toString 方法

  • 绝大多数的 toString 方法都遵循这样的格式:类的名字,随后一对方括号括起来的域值。
    java public String toString(){ return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]"; }

最新文章

  1. mysql可以用这种方式<<! 输入内容 ! 做成脚本
  2. Hibernate的一级二级缓存机制配置与测试
  3. phpstorm的安装和破解
  4. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
  5. HDU 5726 GCD (RMQ + 二分)
  6. OpenJudge 2786 Pell数列
  7. 《JAVASCRIPT高级程序设计》客户端检测
  8. phpcms v9 搜索结果列表页时间显示1970问题解决方案
  9. 轻型Database- sqlite入门
  10. react-router(v4) 路由跳转后返回页面顶部问题
  11. Python对elasticsearch的CRUD
  12. GlusterFS 增删节点及改变复制份数
  13. pycharm开发python利器入门
  14. Centos 安装 nload
  15. 基于jQuery全屏相册插件zoomVisualizer
  16. swiper h5学习
  17. tomcat占用cpu过高解决办法
  18. iOS边练边学--定时任务和HUD
  19. easyui树动态加载参考
  20. 转:解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

热门文章

  1. (转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动
  2. Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
  3. Django_学生管理系统
  4. 51nod-活动安排问题之二
  5. [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
  6. keepalived实现IP地址高可用
  7. 中国电信线CTF线下选拨writeup
  8. AES ECB PKCS5/PKCS7 加解密 python实现 支持中文
  9. Django入门--模板标签、继承与引用
  10. jQuery选择器补充