==与equals的区别

==比较的是两个对象在内存中是不是同一个对象,也就是说比较的是内存中的地址是否相同。

equals比较的是两个对象中的内容是否相同。public boolean equals(Object object) 这个方法是由Object对象提供,子类可以重写。默认的实现是只有当对象和自身比较时才会返回true,这个时候和 == 是等价的。String、BitSet、Date、File都对equals进行了重写,对于两个String对象而言,值相等意味着他们包含相同的字符序列。对于基本数据类型的包装类来说,值相等意味着对应的基本数据类型的值也相等。

例如以下代码:

public class Test {
	public static void main(String[] args) {
    	String s1 = "abc";
        String s2 = s1;
        String s3 = new String("abc");
        String s4 = new String("abc");
        String s5 = "abc";
		
        System.out.println("== comparsion:" + (s1 == s5));
        System.out.println("== comparsion:" + (s1 == s2));
        System.out.println("equals:" + s1.equals(s2));
        System.out.println("== comparsion:" + (s3 == s4));
        System.out.println("equals:" + s3.equals(s4));
    }
}

结果

== comparsion: true
== comparsion: true
equals: true
== comparsion: false
equals:true

posted @ 2022-04-07 15:38  夏醉浅梦  阅读(27)  评论(0)    收藏  举报