public class ll{
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = "a" + "b" + "c";
String s5 = "ab";
String s6 = s5 + "c";
String s7="ab"+"c";
System.out.println(s1 == s2);//true
System.out.println(s2==s4);//true
System.out.println(s1.equals(s2));//true
System.out.println(s1 == s3);//false
System.out.println(s1.equals(s3));//true
System.out.println(s1 == s4);//true
System.out.println(s1.equals(s4));//true
System.out.println(s1 == s5);//false
System.out.println(s1.equals(s5));//false
System.out.println(s1 == s6);//false
System.out.println(s4 == s7);//true
System.out.println(s6 == s7);//false
System.out.println(s1.equals(s6));//true
}
}
不同点 | equels | == |
---|---|---|
对象类型不同 | equals():是超类Object中的方法 | ==是操作符 |
比较对象不同 | 1,String、Date、File、包装类都重写了Object类的equals方法。如果类中重写了equals方法,equals比较内容是否相等。2,如果类中没有重写equals方法,equals比较地址值是否相等(是否指向同一个地址值)。 | 1,如果比较的是基本数据类型变量,比较两个变量的值是否相等。(不一定数据类型相同)。2,如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个地址值。 |
运行速度不同 | equals():没有==运行速度快。 | ==运行速度比equals快, ==只是比较引用。 |