在Java中字符串的比较可以用equals和==.下面用一段代码来解释区别
public class Hello {
public static void main(String[] args) {
String s1 = "ab";
String s2 = "a" + "b";
String s3 = "a";
String s4 = "b";
String s5 = s3 + s4;
System.out.println(s1 == s2); //true
System.out.println(s1 == s5); //false
System.out.println(s2 == s5); //false
System.out.println(s3 + s4 == s5); //false
System.out.println(s3 + s4 == s2); //false
System.out.println("=================");
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s5)); //true
System.out.println(s2.equals(s5)); //true
System.out.println(s2.equals(s3+s4)); //true
System.out.println(s5.equals(s3+s4)); //true
}
}
==是运算符,用于比较两个变量是否相等
equals是object中的类,用于对象之间的比较(String是一种对象).
Java编译器会直接把s2优化为"ab",存放在常量池里.
而是s5是
…未完待续…