Java字符串比较中,为什么要使用equals,而不可以使用 ==
public static void f1() {
String x = "1234";
String y = "1234";
System.out.println(a == b);// 此时相等,不是内容的相等,而是串池的地址相等。
}
public static void f2() {
String x = "1234";
//String b="12"+"34";//这样写也可以,串池地址也相等。
String y = "12"; y += "34";//这样写串池地址就不同了。
System.out.println(a == b);
System.out.println(a.equals(b));
}
在main()方法中调用测试。
public static void main(String[] args) {
f2();
}
如果String类new了以后会怎么样。
字符串的内容就不在串池了。而是在内存的堆栈空间中。
总结两点:
1字符串比较内容的时候用,euqals()方法。
2字符串比较如果使用==则是比较串池地址或者堆栈空间地址。