String 常量池:
String s1 = "abc";
String s2 = new String("abc");
// false
System.out.println(s1 == s2);
字符串拼接对比:
String s1 = "abc";
String s2 = "ab";
// 变量拼接,自动转换成 new StringBuilder().append(s2).append("c").toString()
String s3 = s2 + "c";
// false
System.out.println(s1 == s3);
// 字面量拼接
String s4 = "ab" + "c";
// true
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);
Integer 超过 -128~127 这个范围后,字节码会自动使用 Integer.valueOf():<br />而且:**int 和 Integer 比较**,会自动调用 Integer.intValue() 返回 int 值:
```java
// Integer i1 = Integer.valueOf(128);
Integer i1 = 128;
Integer i2 = 128;
int i3 = 128;
// false
System.out.println(i1 == i2);
// true
System.out.println(i1 == i3);
// true
System.out.println(i1 == i3);
new Integer 则肯定是不相等的,