美文网首页
关于String中的 == 与 hashCode()

关于String中的 == 与 hashCode()

作者: 贾歌 | 来源:发表于2017-10-02 15:22 被阅读9次

首先看一段程序:

image.png

abdc四个字符串的hashcode都相等:是因为String重写了object的hashcode方法:

image.png

由重写的方法可知,String的hashcode只和value值相关,和内存地址无关。

当比较abdc四个字符串的地址时:

  1. 第一个true,是因为a和b是指向同一个变量,这个变量在变量池中。
  2. 第二个false,是因为b指向变量池中的一个变量,而c指向堆栈中变量,所以地址不同。
  3. 第三个false,通过c和d是分别指向堆栈中两个不同的对象,所以地址不同。
  4. 第四个false,原理同第二个false。

相关文章

  • 关于String中的 == 与 hashCode()

    首先看一段程序: abdc四个字符串的hashcode都相等:是因为String重写了object的hashcod...

  • Java-String类的hashCode方法

    首先来看一下String中hashCode方法的实现源码 1 public int hashCode() {2 ...

  • 周题2

    11、String、StringBuffer与StringBuilder的区别12、Hashcode的作用,与 e...

  • HashCode和Equals的区别

    HashCode和equals的区别: String方法的equals方法和HashCode方法 String的H...

  • String中hashCode算法

    说起hashCode是,就先说下HashCode一些关键点:1、hashCode的存在主要是用于查找的快捷性,如H...

  • 由hashCode()引发的一系列思考

    hashCode()方法实现 hashCode()属于String类,String类是一个被final修饰的类 当...

  • String HashCode

    数据结构,HashCode为什么使用31作为乘数 建议配合小傅哥的面经手册使用!!!从今天开始我是小傅哥的布道师 ...

  • String的hashcode

    很多人说自己看过java源码,估计这个是个盲点,知道了感觉确实用处不大,不过见还真有人问,这里就简述一下。他的主要...

  • 第9条:覆盖equals时总要覆盖hashCode

    equals方法和hashCode方法均是Object对象的方法。Object中关于hashCode约定的规范如下...

  • Interview之一:hashCode 与equals

    1、hashCode 与 equals Java中的equals方法和hashCode方法是Object中的,所以...

网友评论

      本文标题:关于String中的 == 与 hashCode()

      本文链接:https://www.haomeiwen.com/subject/aphtyxtx.html