title: two string instances seems same, but their hashcode are different
body: <pre><code>    String a = "success";
      String b = "success";
  
      System.out.println(a.hashCode());
      System.out.println(b.hashCode());
  
      if(a.equals(b)){
          System.out.println("123");
      }
  </code></pre>
  
  <p>I can't understand why the two string have different hashcode.</p>
  
  <pre><code>    String a = "success";
      String b = "success";
  
      System.out.println(a.hashCode());
      System.out.println(b.hashCode());
  
      System.out.println(System.identityHashCode(a));
      System.out.println(System.identityHashCode(b));
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>-1867169789
  1954952228
  33263331
  6413875
  </code></pre>