String 常量池:

  1. String s1 = "abc";
  2. String s2 = new String("abc");
  3. // false
  4. System.out.println(s1 == s2);

字符串拼接对比:

  1. String s1 = "abc";
  2. String s2 = "ab";
  3. // 变量拼接,自动转换成 new StringBuilder().append(s2).append("c").toString()
  4. String s3 = s2 + "c";
  5. // false
  6. System.out.println(s1 == s3);
  7. // 字面量拼接
  8. String s4 = "ab" + "c";
  9. // true
  10. System.out.println(s1 == s4);

Integer 常量池:-128 ~ 127

  • Integer.valueOf()
  • Integer.intValue() ```java Integer i1 = 127; Integer i2 = 127;

// true System.out.println(i1 == i2);

  1. Integer 超过 -128~127 这个范围后,字节码会自动使用 Integer.valueOf():<br />而且:**int Integer 比较**,会自动调用 Integer.intValue() 返回 int 值:
  2. ```java
  3. // Integer i1 = Integer.valueOf(128);
  4. Integer i1 = 128;
  5. Integer i2 = 128;
  6. int i3 = 128;
  7. // false
  8. System.out.println(i1 == i2);
  9. // true
  10. System.out.println(i1 == i3);
  11. // true
  12. System.out.println(i1 == i3);

new Integer 则肯定是不相等的,