关闭

==和equals的区别

91人阅读 评论(0) 收藏 举报
分类:
package per.songhongkang.chapter4.day08;

public class TestEquals {
	public static void main(String[] args) {
		TestEquals tst1=new TestEquals();
		tst1.test1();
//		equals();1)只能处理引用类型变量;2)在Object类中,发现equals()仍然比较的是两个引用变量的地址值是否相等
//		java.lang.Object类,是所有类的根父类;  
//	源码:Object类:public boolean equals(Object obj) {
//	               return (this == obj); }
   
//		
		Person1 p1=new Person1();
		Person1 p2=new Person1();
		System.out.println(p1.equals(p2));//false
		System.out.println(p1==p2);//false,与上面等价
		//像String、包装类、File类、Date类这些重写Object类的equals()方法。
		//比较的是两个对象的“实体内容”是否完全相同。
		String str1=new String("AA");
		String str2=new String("AA");
		System.out.println(str1.equals(str2));//true  why:因为String类重写了equls()方法
		
		
	}
		public void test1(){//		==
//			1.基本数据类型:根据基本数据类型的值判断是否相等。相等则返回true.反之,返回false.
//			注:两端数据类型可以不同。在不同的情况下,也可返回true.
//			2.引用数据类型:比较引用类型的地址值是否相等。
			int i=12;
			int j=12;
			System.out.println(i==j);//true
			char c=12;
			System.out.println(i==c);//true
			float f=12.0F;
			System.out.println(i==f);//true
			int k=65;
			char a='A';
			System.out.println(k==a);//true
			Object obj1=new Object();
			Object obj2=new Object();
			System.out.println("obj1:"+obj1+"\t"+"obj2:"+obj2); 
			//输出结果:obj1:java.lang.Object@6406c7e	obj2:java.lang.Object@6f92c766
			System.out.println(obj1==obj2);//false
			Person1 p1=new Person1();
			Person1 p2=new Person1();
			Person1 p3=p1;
			System.out.println(p1==p2);//false
			System.out.println(p1==p3);//true
			
			
	
		
	}

}
class Person1{
	
}

String类中重写equals方法的源码为:

public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:38190次
    • 积分:1105
    • 等级:
    • 排名:千里之外
    • 原创:69篇
    • 转载:42篇
    • 译文:1篇
    • 评论:2条
    最新评论